C语言下载HTTP的源代码

lishanliyi 2006-12-18 09:50:36
我们参考了一本书上的用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;
}
...全文
526 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
newzy 2006-12-19
  • 打赏
  • 举报
回复
链接错误, VC++ 下把 ws2_32.lib 库加上,
project->setting...->link-->Object/Library modules 里添加

Good Luck!
jim_ceo 2006-12-18
  • 打赏
  • 举报
回复
link错误,你的有关的socket的头文件又没有include

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧