-5

私はC#が初めてで、クライアント用のサーバーリスナーを作成する必要があるため、それを選択しました...問題なく複数のクライアントをリッスンできるスレッドを備えたサーバーを構築しますが、クライアントが切断するとサーバーがエラーを出すことがあります。

System.InvalidOperationException: 接続されていない操作は許可されていません

これは、パケットを受信する私のコードです:

NetworkStream networkStream = clientSocket.GetStream();
networkStream.Read(bytesFrom, 0, 312);
dataFromClient = Encoding.ASCII.GetString(bytesFrom);

string hex = BitConverter.ToString(bytesFrom).Replace("-","");
Console.WriteLine("\n " + hex + "\n_______________()()()______________");

これはエラーのあるコンソールのスクリーンショットです: スクリーンショット リンク

4

1 に答える 1

2

TcpClient.GetStream()は、ソケットが接続されていないか、接続されていない場合に例外をスローします。

コードをtry..catchブロックでラップします。

try
{
    NetworkStream networkStream = clientSocket.GetStream();
    networkStream.Read(bytesFrom, 0, 312);
    dataFromClient = Encoding.ASCII.GetString(bytesFrom);

    string hex = BitConverter.ToString(bytesFrom).Replace("-","");
    Console.WriteLine("\n " + hex + "\n_______________()()()______________");
} 
catch (InvalidOperationException ioex)
{       
    // The TcpClient is not connected to a remote host.
}
catch (ObjectDisposedException odex)
{
    // The TcpClient has been closed.
}
于 2013-02-26T11:48:03.423 に答える