Имеется проблема с передачей (send) данных по 1-му байту. Приведённый код проверял на двух машинах: Win98 и WinXP(SP2). В кач-ве клиента использовал telnet. Если сервер запущен на Win98 или и клиент, и сервер на одной машине - программа работает (сервер передаёт 10000 символов первому подключившемуся клиенту, разрывает связь и завершает работу). Если сервер запущен на WinXP, а клиент на другой машине, то сервер зависает после передачи 8193 байт. Также зависают все другие программы на машине WinXP, которые пытаются работать с сетью (до перезагрузки). Клиент получает от сервера только 1 символ. В чём состоит ошибка? Код (Text): #include <winsock2.h> int main(int argc, char *argv[]) { SOCKET server; SOCKET s; sockaddr_in addr; ZeroMemory(&addr, sizeof addr); WSAData WSAd; int err; err=WSAStartup(MAKEWORD(1, 1), &WSAd); server=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); addr.sin_family=AF_INET; addr.sin_addr.S_un.S_addr=INADDR_ANY; addr.sin_port=htons(8081); err=bind(server, (sockaddr*)&addr, sizeof addr); err=listen(server, SOMAXCONN); s=accept(server, 0, 0); char ch='A'; for(int i=0; i<10000; i++) send(s, &ch, 1, 0);//передаёт 8193 байта, после чего зависает //клиент получает 1 байт shutdown(s, SD_BOTH); closesocket(s); closesocket(server); err=WSACleanup(); return 0; }