C语言下载HTTP的源代码
我们参考了一本书上的用C语言实现的下载网页HTTP的程序.可是运行时出现错误.我们不知道哪里的问题.错误详细信息如下:
socket.cobj: error LINK2001:unresolved external symbol _imp_closesocket@4
socket.cobj: error LINK2001:unresolved external symbol _imp_recv@16
socket.cobj: error LINK2001:unresolved external symbol _imp_WSACleanup@0
socket.cobj: error LINK2001:unresolved external symbol _imp_send@16
socket.cobj: error LINK2001:unresolved external symbol _imp_connect@12
socket.cobj: error LINK2001:unresolved external symbol _imp_gethostbyname@4
socket.cobj: error LINK2001:unresolved external symbol _imp_htons@4
socket.cobj: error LINK2001:unresolved external symbol _imp_WSAGetLastError@0
socket.cobj: error LINK2001:unresolved external symbol _imp_socket@12
socket.cobj: error LINK2001:unresolved external symbol _imp_WSAStartup@8
socket.cexe: fatal error LNK1120:10 unresolved externals
我们的主函数如下:(请哪位大侠帮帮我们.)
int main(int argc,char**argv)
{
WSADATA wsd;
SOCKET sClient;
char szBuffer[DEFAULT_BUFFER];
int ret,i;
struct sockaddr_in server;
struct hostent *host=NULL;
ValidateArgs(argc,argv);
if(WSAStarup(MAKEWORD(2,2),&wsd)!=0)
{
printf("Failde to load Winsock library!\n");
return 1;
}
strcpy(szMessage,DEFAULT_MESSAGE);
sClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(sClient==INVALID_SOCKET)
{
printf("socket() failde:%d\n",WSAGetLastError());
return 1;
}
server.sin_family=AF_INET;
server.sin_port=htons(iPort);
if(server.sin_addr.s_addr==INADDR_NONE)
{
host=gethostbyname(szServer);
if(host==NULL)
{
printf("Unable to resolve server:%s\n",szServer);
return 1;
}
CopyMemory(&server.sin_addr,host->h_addr_list[0],host->h_length);
}
if(connect(sClient,(struct sockaddr *)&server,sizeof(server))==SOCKET_ERROR)
{
printf("connect() failed:%d\n",WSAGetLastError());
return 1;
}
for(i=0;i<dwCount;i++)
{ret=send(sClient,szMessage,strlen(szMessage),0);
if(ret==0)
break;
else if(ret==SOCKET_ERROR)
{
printf("send() failed:%\n",WSAGetLastError());
break;
}
printf("Send %d bytes\n",ret);
if(!bSendOnly)
{
ret=recv(sClient,szBuffer,DEFAULT_BUFFER,0);
if(ret==0)
break;
else if(ret=SOCKET_ERROR)
{
printf("recv() failed:%d\n",WSAGetLastError());
break;
}
szBuffer[ret]='\0';
printf("RECV[%d bytes]:'%s'\n",ret,szBuffer);
}
}
closesocket(sClient);
WSACleanup();
return 0;
}