У меня есть серверное приложение и клиентское приложение.
Я использую сокет для связи между сервером и клиентом. Все работает нормально, если подключен только один клиент: загрузка, загрузка - все работает хорошо.
Но если есть другое соединение с клиентом (я снова запускаю клиентское приложение, что означает, что на моем компьютере запущено 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
}
Что-то не так с моим кодом сервера, из-за которого он не может стать системой с несколькими клиентами? Помощь очень ценится. Заранее спасибо.