CODE
int main(int argc, char* argv[])
{
#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, 0);
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 = htonl(INADDR_ANY);
ssin.sin_port = htons(SRV_PORT);
// Привязываем сокет к адресу
if (bind(s_server, (sockaddr *)&ssin, sizeof(ssin)) == SOCKET_ERROR) //(sockaddr *)&ssin
{
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;
}
{
#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, 0);
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 = htonl(INADDR_ANY);
ssin.sin_port = htons(SRV_PORT);
// Привязываем сокет к адресу
if (bind(s_server, (sockaddr *)&ssin, sizeof(ssin)) == SOCKET_ERROR) //(sockaddr *)&ssin
{
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;
}
программа завершается сообщение Can't bind socket to adress.
не могу понять почему. Код самый простой