次の問題があります。
WM6 アプリケーションを閉じてからもう一度開始しようとすると、次のエラーが表示されます: System.Net.Sockets.Socket.Bind(EndPoint localEP) では、通常、各ソケット アドレス (プロトコル/ネットワーク アドレス/ポート) の使用は 1 つだけ許可されます。 System.Net.Sockets.Socket.TcpListener.Start() で ...
これは、接続がタイムアウトするまでの時間間隔によるものだと思うので、開いているすべての接続を閉じて、強制的に新しい接続を作成したいのですが、これは正しい方法ですか、それとも別の方法で処理できますか?
リッスンを開始するために使用されるコードは次のとおりです。
/// <summary>
/// Listens Asynchronously to Clients, creates a recieveMessageHandler to process the read.
///
/// Check WIKI, TODOS
/// </summary>
/// <returns></returns>
public void Listen()
{
myTcpListener.Start();
while (true)
{
//blocks until a client has connected to the server
try
{
TcpClient myTcpClient = myTcpListener.AcceptTcpClient();
DateTime now = DateTime.Now;
//Test if it's necessary to create a client
ClientConnection client = new ClientConnection(myTcpClient, new byte[myTcpClient.ReceiveBufferSize]);
// Capture the specific client and pass it to the receive handler
client.NetworkStream.BeginRead(client.Data, 0, myTcpClient.ReceiveBufferSize, r => receiveMessageHandler(r, client), null);
}
catch (Exception excp)
{
Debug.WriteLine(excp.ToString());
}
}
}