有关UDP方式的socket网络通信的编程
以下代码都能编译通过
1. 客户端代码
#include <WinSock2.h>
#include <stdio.h>
#include <iostream>
using namespace std;
void main()
{
//加载套接字
WORD wVersionRequest;
WSADATA wsadata;
int err;
wVersionRequest=MAKEWORD(1,1);
err=WSAStartup(wVersionRequest,&wsadata);
if(err!=0)
{
return;
}
SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
CHAR recvBuf[100];
char sendBuf[100];
char tempBuf[100];
int len=sizeof(SOCKADDR);
while (1)
{
printf("chient==>please input data:\n");
gets(sendBuf);
sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrSrv,len);
recvfrom(sockClient,recvBuf,100,0,(SOCKADDR*)&addrSrv,&len);
if('q'==recvBuf[0])
{
sendto(sockClient,"q",strlen("q")+1,0,(SOCKADDR*)&addrSrv,len);
printf("chat end!\n");
break;
}
sprintf(tempBuf,"%s say: %s",inet_ntoa(addrSrv.sin_addr),recvBuf);
printf("%s\n",tempBuf);
}
closesocket(sockClient);
WSACleanup();
//cout<<"hello world!"<<endl;
}
- 服务端代码
#include <WinSock2.h>
#include <stdio.h>
#include <iostream>
using namespace std;
void main()
{
//加载套接字
WORD wVersionRequest;
WSADATA wsadata;
int err;
wVersionRequest=MAKEWORD(1,1);
err=WSAStartup(wVersionRequest,&wsadata);
if(err!=0)
{
return;
}
SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
CHAR recvBuf[100];
char sendBuf[100];
char tempBuf[100];
int len=sizeof(SOCKADDR);
while (1)
{
printf("chient==>please input data:\n");
gets(sendBuf);
sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrSrv,len);
recvfrom(sockClient,recvBuf,100,0,(SOCKADDR*)&addrSrv,&len);
if('q'==recvBuf[0])
{
sendto(sockClient,"q",strlen("q")+1,0,(SOCKADDR*)&addrSrv,len);
printf("chat end!\n");
break;
}
sprintf(tempBuf,"%s say: %s",inet_ntoa(addrSrv.sin_addr),recvBuf);
printf("%s\n",tempBuf);
}
closesocket(sockClient);
WSACleanup();
//cout<<"hello world!"<<endl;
}
执行效果: