使用XP写服务程序:
1.包含头文件
#include<WinSock2.h>//Winsock库
#pragma comment(lib,"Ws2_32.lib")
2.UDP通讯代码
//载入初始化winsock库
WSADATA wsaData;
WSAStartup(MAKEWORD(2,0),&wsaData);
//(1)创建UDP套接字sLocal
SOCKET sLocal = socket(
AF_INET,//地址家族,Winsock中必须为AF_INET
SOCK_DGRAM,//SOCK_DGRAM表示UDP套接字
0);
//(2)绑定套接字
sockaddr_in addLocal;
addLocal.sin_family = AF_INET;//地址家族,Winsock中必须为AF_INET
addLocal.sin_port = htons(8000);//端口,但是需要转换为网络字节序
addLocal.sin_addr.S_un.S_addr = htonl(192.168.0.211);//本地任意IP地址INADDR_ANY
bind(sLocal,(sockaddr*)&addLocal,sizeof(sockaddr));
//(3)使用recvfrom与sendto收发数据
SOCKADDR_IN addrRemote;
int len = sizeof(SOCKADDR);
char buf[255] = {0};
while(1)
{
recvfrom(
sLocal,//通信套接字
buf,//接受数据的缓冲区
255,//缓冲区大小
0,//通常设置为0
(SOCKADDR*)&addrRemote,//接受远程地址
&len);//地址结构体大小
printf("%s/n",buf);
/*
sendto(
sLocal,//通信套接字
"Hello",//要发送的数据
sizeof("Hello"),//数据长度
0,//通常设置为0
(SOCKADDR*)&addrRemote,//发送的地址
sizeof(SOCKADDR));//地址大小
*/
}
//(4)关闭套接字
closesocket(sLocal);
//卸载库
WSACleanup();
下面是在WinCE下实现的客户端程序
1.包含的头文件
#include <WinSock2.h>//Winsock库
#pragma comment(lib,"Ws2.lib")
2.UDP通讯代码
WSADATA wsaData;
WSAStartup(MAKEWORD(2,0),&wsaData);
//(1)创建UDP套接字sLocal
SOCKET sLocal = socket(
AF_INET,//地址家族,Winsock中必须为AF_INET
SOCK_DGRAM,//SOCK_DGRAM表示UDP套接字
0);
//(2)使用recvfrom与sendto收发数据
SOCKADDR_IN addrRemote;
addrRemote.sin_family = AF_INET;//地址家族,Winsock中必须为AF_INET
addrRemote.sin_port = htons(8000);//端口,不能为依据打开的端口
addrRemote.sin_addr.S_un.S_addr = inet_addr("192.168.0.21");//服务器IP地址
int len = sizeof(SOCKADDR);
char buf[255] = {0};
sendto(
sLocal,//通信套接字
"Hello Server",//要发送的数据
sizeof("Hello Server"),//数据长度
0,//通常设置为0
(SOCKADDR*)&addrRemote,//发送的地址
sizeof(SOCKADDR));//地址大小
printf("Hello Server");
/*
recvfrom(
sLocal,//通信套接字
buf,//接受数据的缓冲区
255,//缓冲区大小
0,//通常设置为0
(SOCKADDR*)&addrRemote,//接受远程地址
&len);//地址结构体大小
printf("%s/n",buf);
*/
while(1)
{
}
//(3)关闭套接字
closesocket(sLocal);
WSACleanup();