こんにちは
すべてのメッセージバイトがSendAsyncで送信されたことを確認する方法はありますか?このメソッドのコールバックには情報はありません。そして、送信操作でソケットを使用して送信できるメッセージの最大サイズは何ですか?制限が存在するか、必要なだけ大きなデータを送信できますか?明確な回答のためSendAsyncが完了したら?
感謝;)
こんにちは
すべてのメッセージバイトがSendAsyncで送信されたことを確認する方法はありますか?このメソッドのコールバックには情報はありません。そして、送信操作でソケットを使用して送信できるメッセージの最大サイズは何ですか?制限が存在するか、必要なだけ大きなデータを送信できますか?明確な回答のためSendAsyncが完了したら?
感謝;)
コールバックは、メッセージが送信されたエラー表示なしで呼び出された場合。
はい、あなたが必要とするすべての情報がコールバックである:
private void SendSAEA_Completed(object sender, SocketAsyncEventArgs sendSAEA)
{
if (sendSAEA.BytesTransferred == 0 || sendSAEA.SocketError != SocketError.Success)
{
Close();
}
else
{
// Process sendSAEA.BytesTransferred
}
}
また、我々はMSDNによると、1回の送信操作で送信することができますバッファ:
(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)
は明らかにそれは文句を言わないだけ例外があった場合を除きバイトの送信を停止します。たぶんそれはそれが何のために設計されたことを行うタイプを信頼していますか? – leppie