Асинхронный сервер - C#
Формулировка задачи:
всем привет. У меня есть асинхронный сервер, который получает данные следующим образом:
Когда от клиента посылаются 2 запроса подряд, и если сервер не успел обработаться 1-ый запрос, то 2-ой просто пропадёт. Как сделать так, чтоб запрос вставал в очередь, и после обработке 1-го запроса началась обрабтка 2-го?
Пробовал так:
Всёравно....
Можно сделать так конечно:
Но тогда создаются N потоков для прослушки....а если клиентов много, то это не вариант...
private void OnRecieved(IAsyncResult ar) { Socket sock = (Socket)ar.AsyncState; byte[] aryRet = GetRecievedData(ar); if (aryRet.Length < 1) { this.OnDisconnected(); this.Disconnect(); } else { // Обрабатываю запрос // sock.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnRecieved), m_sock); } }
private void OnRecieved(IAsyncResult ar) { Socket sock = (Socket)ar.AsyncState; byte[] aryRet = GetRecievedData(ar); if (aryRet.Length < 1) { this.OnDisconnected(); this.Disconnect(); } else { sock.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnRecieved), m_sock); // Обрабатываю запрос // } }
for(int i=0;i<N;i++) sock.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnRecieved), m_sock);
Решение задачи: «Асинхронный сервер»
textual
Листинг программы
sock.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnRecieved), sock)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д