Создавайте проект, как в прошлый раз только с именем WinSock3.
Для улучшения чтения программы я вынес код для получения и проверки имени хоста в отдельную процедуру, кроме этого все return по ошибке я заменил на exit, и правда чего волынить то ?
void SocketGetHostName() { char chInfo[64]; if (gethostname(chInfo,sizeof(chInfo))) { printf("Not local host\n"); exit(1); } else { printf(chInfo); printf(" GetHostName OK !!!!!\n"); } }
Вносим изменения в WaitSocket для создания сокета.
void WaitSocket() { SocketGetHostName(); SOCKET servsocket; servsocket = socket(PF_INET,SOCK_STREAM,DEFAULT_PROTOCOL); if (servsocket==INVALID_SOCKET) { printf("Error create socket :-(\n"); exit(1); } closesocket(servsocket); }
Заводим переменную SOCKET, вот как она описана в #include "winsock.h"
/* * The new type to be used in all * instances which refer to sockets. */ typedef u_int SOCKET;
После чего вызываем socket, которая его и создает. Дальше указывается тип потока и протокол.
SOCK_STREAM - TCP SOCK_DGRAM - UDP
Протокол мы использовали по умолчанию. Результат возврата надо проверить на INVALID_SOCKET, мало ли чего ??? После работы сокет необходимо закрыть. Вообще все что открываешь нужно и закрывать. Как входную дверь :-)))