2011-01-04 31 views
1

こんにちは
すべてのメッセージバイトがSendAsyncで送信されたことを確認する方法はありますか?このメソッドのコールバックには情報はありません。そして、送信操作でソケットを使用して送信できるメッセージの最大サイズは何ですか?制限が存在するか、必要なだけ大きなデータを送信できますか?明確な回答のためSendAsyncが完了したら?

感謝;)

+0

は明らかにそれは文句を言わないだけ例外があった場合を除きバイトの送信を停止します。たぶんそれはそれが何のために設計されたことを行うタイプを信頼していますか? – leppie

答えて

0

コールバックは、メッセージが送信されたエラー表示なしで呼び出された場合。

0

はい、あなたが必要とするすべての情報がコールバックである:

private void SendSAEA_Completed(object sender, SocketAsyncEventArgs sendSAEA) 
    {   
      if (sendSAEA.BytesTransferred == 0 || sendSAEA.SocketError != SocketError.Success) 
      { 
       Close(); 
      } 
      else 
      { 
       // Process sendSAEA.BytesTransferred 
      } 
    } 

また、我々はMSDNによると、1回の送信操作で送信することができますバッファ:

  • あなたがバッファを制御することができますサイズは:Socket.SendBufferSizeです。
  • デフォルトは8192

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.sendbuffersize.aspx

そして、SendAsyncのためのものである:メッセージ指向のソケットについて

、 は、基礎となる の最大メッセージサイズを超えませんWindowsソケットサービス プロバイダー。データは、基礎となる サービスプロバイダを介してアトミック パスに長すぎる場合、データは送信さ と SocketAsyncEventArgs.SocketErrorネイティブのWinsock WSAEMSGSIZE エラーコード(10040)に 設定でのSocketExceptionをスロー SendAsync方法ではありません。

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.sendasync.aspx

関連する問題