サーバー アプリケーションとクライアント アプリケーションがあります。サーバーとクライアント間の通信にソケットを使用しています。クライアント接続が 1 つしかない場合は、すべて正常に機能します。アップロード、ダウンロードはすべて正常に機能します。
しかし、別のクライアント接続がある場合 (クライアント アプリケーションを再度開始します。これは、コンピューターで 2 つのクライアント アプリと 1 つのサーバー アプリが実行されていることを意味します)、サーバーが混乱し始めます。サーバーはクライアントからのファイル アップロードを受信しません。サーバーからダウンロードできませんでした。
サーバー コードでは、クライアント接続ごとに既にマルチスレッドを使用しているため、問題がわかりません。ここに私のサーバーコードがあります:
private void ServerForm_Load(object sender, System.EventArgs e)
{
//...
Thread th = new Thread(new ThreadStart(ListenForPeers));
th.Start();
}
public void ListenForPeers()
{
serversocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serversocket.Blocking = true;
IPHostEntry IPHost = Dns.GetHostEntry(server);
string[] aliases = IPHost.Aliases;
IPAddress[] addr = IPHost.AddressList;
IPEndPoint ipepServer = new IPEndPoint(addr[0], 8090);
serversocket.Bind(ipepServer);
serversocket.Listen(-1);
while (true)
{
clientsock = serversocket.Accept();
if (clientsock.Connected)
{
total_clients_connected++;
AppendText("Client connected...");
Thread tc = new Thread(new ThreadStart(listenclient));
tc.Start();
}
}
void listenclient()
{
// start communication
}
サーバー コードに問題があり、マルチクライアント サーバー システムになれないのでしょうか? 助けていただければ幸いです。前もって感謝します。