2011-05-25 77 views
0

BeginSend當我從iPad斷開iPad連接時,功能不會引發異常。有趣的是OnSend回調函數的調用和結果。 Iscompleted返回true。單觸式插座問題

如果我打電話,錯誤代碼另一重載函數,它總是返回success

tcpAsyCl.BeginSend(
      write_data, 
      0, 
      write_data.Length, 
      SocketFlags.None, 
      out error, 
      new AsyncCallback(OnSend), 
      null); 

if (error != SocketError.Success) 
     throw new Exception("Not connected"); //never goes her 

有誰知道這種行爲?

回答

1

as it's async call!您無法在下面的行中驗證結果...我相信您有一種方法可以連接以獲取正確的錯誤。

異步電話在一個新的線程中創建,它在那裏,你需要等待答案。不在你的主線程中,或者那將是一個Synchronous調用。

這裏是一個list of all methods,您可以使用

我強烈建議你深吸看看這個文件

Using an Asynchronous Client Socket

+0

當我使用這種形式,它永遠不會拋出異常。 tcpAsyCl.BeginSend(write_data,0,write_data.Length,SocketFlags.None,new AsyncCallback(OnSend),null);但在Windows下,它會在網絡不可用時拋出異常。在iOS中,我無法修復斷開狀態。 – Noro 2011-05-25 08:05:58

+0

所有的錯誤都會在'OnSend'回調中,因爲這是您告訴Async方法返回信息的地方,您可以使用委託而不是方法。請參閱最新答案的鏈接。 – balexandre 2011-05-25 08:10:10

+0

您可以提供示例代碼嗎? – Noro 2011-05-25 08:13:00