からクライアントの接続が切断私は新しいスレッドで.NETソケットの問題:サーバー側でサーバー
static void ListenForConsultant()
{
while (true)
{
var serverSocket = new TcpListener(IPAddress.Any, 2111);
serverSocket.Start();
var clientSocket = serverSocket.AcceptTcpClient();
consultantConnected = true;
Console.WriteLine(" >> Consultant Connected");
byte[] bytesFrom = new byte[10025];
while (true)
{
if (!clientSocket.Connected)
{
break;
}
NetworkStream networkStream = clientSocket.GetStream();
bytesFrom = new byte[10025];
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
var dataFromConsultant = System.Text.Encoding.ASCII.GetString(bytesFrom);
if (dataFromConsultant.IndexOf("~") != -1 && dataFromConsultant.IndexOf("^") != -1 && dataFromConsultant.IndexOf("^") > dataFromConsultant.IndexOf("~"))
{
var lengthOfMessage = dataFromConsultant.IndexOf("^") - dataFromConsultant.IndexOf("~") - 1;
dataFromConsultant = dataFromConsultant.Substring(dataFromConsultant.IndexOf("~") + 1, lengthOfMessage);
Console.WriteLine(" >> From consultant:" + dataFromConsultant);
}
}
consultantConnected = false;
Console.WriteLine(" >> Consultant Disconnected");
serverSocket.Stop();
}
}
を実行し、このコードを持っているdoesnの私はすべてがうまく動作ポート2111にパテを使用して接続するが、私はパテソケットを閉じたとき「トン近くには、しかし、私は条件
if (!clientSocket.Connected)
{
break;
}
デバッグclientSocket.Connectedは、私は、サーバーから切断された後も、真実であることを私に示しています。
どうしてですか?
このプロパティの代わりにクライアントの状態を判断するにはどうすればよいですか? – takayoshi
は答えを更新しました:コード[前回の回答から](http://stackoverflow.com/questions/6452992/tcpclient-disconnect-during-async-read/6455369#6455369)。 –