关于vs2008上的socket链接错误问题

昨天想用socket做一个简单的windows程序, 先拿来了以前在vc6.0上做的一小段代码, 竟然发现在vs2008上不能运行.出现了好多链接错误, 研究了好半天也没有发现是怎么回事.>下来是代码和 错误信息.
正在链接...>
1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__closesocket@4,该符号在函数 _main 中被引用1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__inet_ntoa@4,该符号在函数 _main 中被引用1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__sendto@24,该符号在函数 _main 中被引用1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__recvfrom@24,该符号在函数 _main 中被引用
1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__bind@12,该符号在函数 _main 中被引用
1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__htons@4,该符号在函数 _main 中被引用
1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__htonl@4,该符号在函数 _main 中被引用
1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__socket@12,该符号在函数 _main 中被引用
1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__WSACleanup@0,该符号在函数 _main 中被引用
1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__WSAStartup@8,该符号在函数 _main 中被引用
1>d:\My Documents\Visual Studio 2008\Projects\tem\Debug\tem.exe : fatal error LNK1120: 10 个无法解析的外部命令

代码是:


#include<Winsock2.h>
#include<stdio.h>
int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
                         
return 1;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return 1;
}
SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);
sockaddr_in addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(4546);

bind(sockSrv,(sockaddr*)&addrSrv,sizeof(sockaddr));
char recvBuf[100];
char sendBuf[100];
char temBuf[200];
sockaddr_in addrClient;
int len=sizeof(sockaddr);
while(1){
recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR *)&addrClient,&len);
if('q'==recvBuf[0]){
sendto(sockSrv,"q",strlen("q")+1,0,(SOCKADDR *)&addrClient,len);
printf("Chat end!\n");
break;

}
sprintf(temBuf,"%s say: %s",inet_ntoa(addrClient.sin_addr),recvBuf);
printf("%s\n",temBuf);
printf("Please input da ta:\n");
gets(sendBuf);
sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR *)&addrClient,len);
}
closesocket(sockSrv);
WSACleanup();

}

编译没有问题的, 主要是链接上的错误,所以就去查msdn。第一次竟然没有发现是哪的错,后在csdn上search了一下后才发现好像是在08上写socket要加上新的链接库  Ws2_32.lib.再查msdn,要求如下:
Header   Declared in Winsock2.h.

Library   Use Ws2_32.lib.

DLL        Requires Ws2_32.dll.

加上后果然成功了。



在新的08上要加入链接库 方法:项目>属性->配置属性->链接器->输入 :附加依赖项 中加入要链接的库即可。

关于vs2008上的socket链接错误问题 - strive_on<wbr>ly - 奋斗,我要一直奋斗...
VS 使用 socket(套接字)是一种在网络编程中常用的方法。VS(Visual Studio)是一种集成开发环境,提供了丰富的工具和功能来帮助开发人员开发软件。而 socket 则是一种用于在不同计算机之间进行通信的软件接口。 VS 提供了用于创建和管理 socket 的类库和函数,使开发者能够方便地在应用程序中实现网络通信功能。通过使用 socket,可以建立起服务器和客户端之间的连接,实现数据的传输和交换。通过 socket,可以实现不同设备之间的数据传递,例如在服务器和客户端之间传输文件、发送消息等。 VS 使用 socket 进行网络编程的优势在于其丰富的功能和易用性。开发人员可以利用 VS 提供的类库和函数,简化网络编程的过程,快速实现各种网络通信的需求。VS 提供了高度抽象的网络编程接口,可以屏蔽底层细节,使开发者更加专注于业务逻辑的实现。 然而,VS 使用 socket 也存在一些限制和挑战。网络编程需要考虑到各种异常情况和错误处理,例如连接中断、网络延迟等。此外,网络协议的选择和配置也需要一定的专业知识。在使用 socket 进行网络编程时,需要仔细设计和测试,确保程序的正确性和可靠性。 总之,VS 使用 socket 是一种强大而又灵活的方式进行网络编程。通过运用 VS 提供的丰富功能,开发者可以方便地实现各种网络通信需求,并且在开发过程中要注意处理异常情况和保证程序的可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值