udp网络编程
本帖最后由 yuzhoufengjiu 于 2013-04-21 10:51:07 编辑
#include <Winsock2.h>
#include <stdio.h>
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
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(6000);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
char recvBuf[100];
recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);
printf("%s\n",recvBuf);
closesocket(sockSrv);
WSACleanup();
}
显示结果:
是一段乱码,然后就结束了,按理说,应该是等待接收数据状态的...
我在别人的电脑上测试的时候没问题,是处于等待接收数据状态,可是在我电脑上却不是的....是我的电脑设置问题?望解答...
[解决办法]
这有很多socket例子,调试好的,找一个试试就行,不用总自己写:
http://download.csdn.net/detail/geoff08zhang/4571358
[解决办法]
是一段乱码,然后就结束了,按理说,应该是等待接收数据状态的...
用memset或ZeroMemory初始化一下的。。
在while(1)
{
}中才会继续!
[解决办法]
改变一下端口号试试。
有显示内容代表已经成功接收数据了。
[解决办法]
wVersionRequested = MAKEWORD( 1, 1 );
我一直用的是2.2啊。楼主用1.1 是不是和PC的SOCKET版本有关?