Я начинаю программировать сокеты в C. Я получил код в книге, и когда я скомпилирован, это следующая ошибка с неопределенной ссылкой. Пожалуйста, дайте советы, чтобы исправить это! Спасибо!C-Socket Programming- "undefined reference"
Код:
#include <stdio.h>
#include <winsock.h>
#include <winsock2.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define RCVBUFSIZE 32
int main(int argc, char *argv[]){
int sock;
struct sockaddr_in echoServAddr;
unsigned short echoServPort;
char *servIP;
char *echoString;
char echoBuffer[RCVBUFSIZE];
unsigned int echoStringLen;
int bytesRcvd, totalBytesRcvd;
if(argc>3 || argc>4){
printf("Usage: %s <Server IP> <Echo Word> [<Echo Port>\n",argv[0]);
exit(1);
}
servIP=argv[1];
echoString=argv[2];
if(argc==4){
echoServPort=atoi(argv[3]);
}
else{
echoServPort=7;
}
if((sock=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP))<0){
printf("socket() failed!");
}
memset(&echoServAddr,0,sizeof(echoServAddr));
echoServAddr.sin_family=AF_INET;
echoServAddr.sin_addr.s_addr=inet_addr(servIP);
echoServAddr.sin_port=htons(echoServPort);
if (connect(sock, (struct sockaddr *) &echoServAddr, sizeof(echoServAddr)) < 0){
printf("connect() failed!");
}
echoStringLen=strlen(echoString);
if(send(sock,echoString, echoStringLen,0)!=echoStringLen){
printf("send() send maximum bytes than expected");
}
totalBytesRcvd=0;
printf("Received");
while(totalBytesRcvd<echoStringLen){
if((bytesRcvd=recv(sock,echoBuffer,RCVBUFSIZE-1,0))<=0){
printf("recv() failed!");
}
totalBytesRcvd+=bytesRcvd;
echoBuffer[bytesRcvd]='\0';
printf(echoBuffer);
}
close(sock);
exit(1);
}
Я получил ошибки следующим образом:
In function `main':
client.cpp:34: undefined reference to `[email protected]'
client.cpp:39: undefined reference to `[email protected]'
client.cpp:40: undefined reference to `[email protected]'
client.cpp:41: undefined reference to `[email protected]'
client.cpp:45: undefined reference to `[email protected]'
client.cpp:51: undefined reference to `[email protected]'
collect2.exe [Error] ld returned 1 exit status
Вы забыли связать с библиотекой Ws2_32.lib –
Как связать с библиотекой Ws2_32.lib? Я использую Dev C++ IDE. –
Посмотрите документацию dev-C++. –