TCP/IP 経由で WP8 から IP/ポートに接続しようとしています。socket.ConnectAsync() を使用して接続を開始し、このような完了イベントを指定します
socketEventArg.Completed += new EventHandler<SocketAsyncEventArgs>(delegate(object s, SocketAsyncEventArgs e)
{
lasterrorstring = e.SocketError.ToString();
if (e.SocketError != SocketError.Success)
{
:
}
});
すべてが機能します。だから私は他のホストと正しく話すことができます。しかし、エラーケースは私を悩ませます。何らかの理由で、e.SocketError は常に Success を返します。存在しないIPに接続しようとさえしました。成功も報告します。その後の Send() でさえ、成功を報告します。ここで何が問題なのですか?
完全を期すために、ここに私の接続設定コード全体を示します
Socket _socket = null;
DnsEndPoint hostEntry = new DnsEndPoint(hostName, portNumber);
// Create a stream-based, TCP socket using the InterNetwork Address Family.
_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// Create a SocketAsyncEventArgs object to be used in the connection request
SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs();
socketEventArg.RemoteEndPoint = hostEntry;
// Inline event handler for the Completed event.
// Note: This event handler was implemented inline in order to make this method self-contained.
socketEventArg.Completed += new EventHandler<SocketAsyncEventArgs>(delegate(object s, SocketAsyncEventArgs e)
{
// Retrieve the result of this request
lasterrorstring = e.SocketError.ToString();
if (e.SocketError != SocketError.Success)
{
res = 1;
}
});
// Make an asynchronous Connect request over the socket
_socket.ConnectAsync(socketEventArg);