服务器
#include<stdio.h>
#include<Winsock2.h>
void main()
{
WORD word;
int err;
WSADATA wsadata; //用来储存调用AfxSocketInit全局函数返回的Windows Sockets初始化信息
word=MAKEWORD(1,1); //建一个无符号16位整形,通过连接两个给定的无符号参数,后面的参数在高8位
err=WSAStartup(word,&wsadata); //WSAStartup函数完成对Winsock服务的初始化
if(err!=0)
{
return ;
}
if(LOBYTE(wsadata.wVersion)!=1||LOBYTE(wsadata.wVersion)!=1) //LOBYTE()取低8位
{
WSACleanup(); //终止winsock的使用
return ;
}
SOCKET clientsocket=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN socketadd;
socketadd.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
socketadd.sin_family=AF_INET;
socketadd.sin_port=htons(6000);
sendto(clientsocket,"hello",strlen("hello")+1,0,(SOCKADDR*)&clientsocket,sizeof(SOCKADDR));
closesocket(clientsocket);
WSACleanup();
}
客户
#include<stdio.h>
#include<Winsock2.h>
void main()
{
WORD word;
int err;
WSADATA wsadata; //用来储存调用AfxSocketInit全局函数返回的Windows Sockets初始化信息
word=MAKEWORD(1,1); //建一个无符号16位整形,通过连接两个给定的无符号参数,后面的参数在高8位
err=WSAStartup(word,&wsadata); //WSAStartup函数完成对Winsock服务的初始化
if(err!=0)
{
return ;
}
if(LOBYTE(wsadata.wVersion)!=1||LOBYTE(wsadata.wVersion)!=1) //LOBYTE()取低8位
{
WSACleanup(); //终止winsock的使用
return ;
}
SOCKET socketsend=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN socketadd;
socketadd.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
socketadd.sin_family=AF_INET;
socketadd.sin_port=htons(6000);
bind(socketsend,(SOCKADDR*)&socketadd,sizeof(SOCKADDR));
SOCKADDR_IN socketclient;
int len=sizeof(SOCKADDR);
char buff[100];
recvfrom(socketsend,buff,100,0,(SOCKADDR*)&socketclient,&len);
printf("%s/n",buff);
closesocket(socketsend);
WSACleanup();
}