начал раскуривать работу с сокетами, вроде как набрал. проблема в том что мой MS VC++ ругается: Compiling... cl : Command line warning D9035 : option 'Wp64' has been deprecated and will be removed in a future release main.c c:\tid\coding\raw socket\main.c(49) : warning C4267: 'function' : conversion from 'size_t' to 'int', possible loss of data Linking... main.obj : error LNK2019: unresolved external symbol _closesocket@4 referenced in function _main main.obj : error LNK2019: unresolved external symbol _recv@16 referenced in function _main main.obj : error LNK2019: unresolved external symbol _send@16 referenced in function _main main.obj : error LNK2019: unresolved external symbol _connect@12 referenced in function _main main.obj : error LNK2019: unresolved external symbol _htons@4 referenced in function _main main.obj : error LNK2019: unresolved external symbol _gethostbyname@4 referenced in function _main main.obj : error LNK2019: unresolved external symbol _socket@12 referenced in function _main Debug\sockets.exe : fatal error LNK1120: 7 unresolved externals как можно с этим справится? Код (Text): #include <stdio.h> #include <string.h> #include <WinSock.h> #define BUFSIZE 256 #define RECVBUFSIZE 1024 void error(char *msg); static char buf[BUFSIZE]; static char recbuf[RECVBUFSIZE]; int main(int argc, char *argv[]) { /*int sockfd;*/ SOCKET sockfd; int portno; struct sockaddr_in serv_addr; struct hostent *server; if (argc < 3) { fprintf(stderr,"usage %s hostname port\n", argv[0]); exit(0); } portno = atoi(argv[2]); sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); if (sockfd < 0) error("ERROR: opening socket"); server = gethostbyname(argv[1]); if (server == NULL) error("ERROR: no such host"); memset((char *) &serv_addr, 0x00, sizeof(struct sockaddr_in)); serv_addr.sin_family = AF_INET; memcpy((char *) &serv_addr.sin_addr.s_addr, (char *) server->h_addr, server->h_length); serv_addr.sin_port = htons(portno); printf("Connect with the server:\n"); if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(struct sockaddr_in)) < 0) error("ERROR: connect with the server"); printf("Please enter the message:\n"); fgets(buf,BUFSIZE-1,stdin); printf("Send the message:\n"); if (send(sockfd, buf, strlen(buf), 0) < 0) error("ERROR: send the message"); printf("Get the message:\n"); if (recv(sockfd, recbuf, RECVBUFSIZE-1, 0) < 0) error("ERROR: get the message"); closesocket(sockfd); return 0; } int error(char *msg) { printf("%s\n", msg); return 1; }
Подключение LIB файла wsock32.lib? Это делается в меню Project далее Setting, далее Link и Object/library modules . Туда надо вписать Wsock32.lib. Или дописать в рядом с другими объявлениями: Код (Text): #pragma comment(lib,"wsock32.lib")
_sheva740 по моему ответу можно было нагуглить и решить проблему. по Вашему ответу ТС знает где можно всегда сочкануть )
да я не подключил. теперь все работает. Project -> ProjectName Property -> Linker -> Input -> Additional Dependencies ws2_32.lib
Спасибо! wsd кстати я нагуглил, и нашел ответ сам, потом обновил страницу и уже были ответы _sheva740 благодарю!