私のクライアントが切断されたときに、サーバー上で次のコードを持っている:私は更新の内側にはまだ、試してみて、デバッグ右その後とき今TCPクライアントを正しく閉じるか廃棄するには?
foreach (ClientEntity client in connectedClients) {
if (!isClientStillConnected(client.tcpClient)) {
disconnectedClients.Add(client);
client.tcpClient.Close();
Debug.Log (" :: Client " + client.tcpClientName + " has disconnected! ::");
continue;
} else {
Do_The_Stuff_And_Things();
}
}
}
:すべてのフレームを実行しているアップデートの内側
、 ():
for (int i = 0; i < disconnectedClients.Count; i++) {
Debug.Log(":: Disconnected clients count: " + disconnectedClients.Count.ToString());
Debug.Log(":: Disconnected client at index " + i + ": " + disconnectedClients[i]);
}
このセクションでは、disconnectedClientsリストから切断クライアントを削除することですが、私はそれを実行し、クライアントを終了すると、ここだけのスニペット、Unityはコンソールにスロー何:
そしてそれが続きます。したがって、ループのは停止しません。つまり、クライアントが常にリストに追加されています。今何が問題なのですか?クライアントを閉じる(閉じる)にはどうすればいいですか??クライアント側では
私が実行します。
nwReader.Close();
nwWriter.Close();
tcpClient.Close();
socketReady = false;
だけFYI、クラスClientEntity:
public class ClientEntity {
public TcpClient tcpClient;
public string tcpClientName;
public ClientEntity(TcpClient tcpClientSocket){
tcpClientName = "Guest";
tcpClient = tcpClientSocket;
}
}