Цитата(XVR @ Mar 20 2014, 11:13)

Кстати, а какой код ошибки возвращает WSAGetLastError после bind?
10048
исправил как вы рекомендовали
CODE
int main(int argc, char* argv[])
{
int i;
#ifdef WIN32
WSADATA wsadata;
WSAStartup(MAKEWORD(2,2), &wsadata);
#endif
SOCKET s_server, s_client; // сокеты клиента и севера
sockaddr_in ssin; // адрес сокета
char * buffer = new char[1024]; // буфер данных
int len; // длина данных
// создаем сокет
s_server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s_server == SOCKET_ERROR)
{
printf("Can't create socket.\n\rPush any button for exit.\n\r");
getchar();
return 0;
}
// формируем адрес сокета
ssin.sin_family = AF_INET;
ssin.sin_addr.s_addr = INADDR_ANY;
ssin.sin_port = htons(SRV_PORT);
// Привязываем сокет к адресу
if (bind(s_server, (sockaddr *)&ssin, sizeof(ssin)) == SOCKET_ERROR) //(sockaddr *)&ssin
//i = WSAGetLastError();
// printf( "%d\n", i);
{
printf("Can't bind socket to adress.\n\rPush any button for exit.\n\r");
getchar();
return 0;
}
// начинаем прослушку
listen(s_server, 5);
while(1)
{
// принимаем подключение
s_client = accept(s_server, NULL, NULL);
if (s_client == INVALID_SOCKET)
return 0;
// принимаем запрос от клиента
len = recv(s_client, buffer, MAXDATA, 0);
if (len == SOCKET_ERROR)
return 0;
buffer[len] = 0;
printf("%s\n",buffer);
// отправляем ответ
sprintf(buffer, "Got %d bytes of data.", len);
len = send(s_client, buffer, strlen(buffer), 0);
if (len == SOCKET_ERROR)
return 0;
// закрываем сокет
//closesocket(s_client);
shutdown(s_client, 1);
printf("Push any button for exit.");
getchar();
}
//closesocket(s_server);
shutdown(s_server, 1);
#ifdef WIN32
WSACleanup();
#endif
return 0;
}
результат тот же
Сообщение отредактировал Dubov - Mar 20 2014, 07:24