MFC/C++---UDP套接字通信代码实现
  5Z6Aj0LQwRjK 2023年12月22日 119 0


UDP套接字

MFC/C++---UDP套接字通信代码实现_套接字

服务端

#include <WinSock2.h>
#include<iostream>

#pragma comment(lib,"ws2_32.lib")

int main(){
	//初始化套接字库
	WORD wVersion;
	WSADATA wsaData;
	int err;

	wVersion=MAKEWORD(1,1);
	err=WSAStartup(wVersion,&wsaData);
	if(err!=0){
		return err;
	}
	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(600);

	//绑定到本机6002端口
	bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));


	//接受请求,处理请求
	SOCKADDR_IN addrCli;
	int len=sizeof(SOCKADDR);

	char sendBuf[]="UDP Server...";
	char recvBuf[100];

	std::cout<<"Start UDP server with port 6002"<<std::endl;
	while(true){
		//接收数据
		recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrCli,&len);
		std::cout<<"Recv:"<<recvBuf<<std::endl;

		//发送数据
		sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrCli,len);
		std::cout<<"Send:"<<sendBuf<<std::endl;
	}

	closesocket(sockSrv);
	WSACleanup();



	return 0;
}

客户端

#include <WinSock2.h>
#include<iostream>

#pragma comment(lib,"ws2_32.lib")

int main(){
	//初始化套接字库
	WORD wVersion;
	WSADATA wsaData;
	int err;

	wVersion=MAKEWORD(1,1);
	err=WSAStartup(wVersion,&wsaData);
	if(err!=0){
		return err;
	}
	if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1){
		WSACleanup();
		return -1;
	}

	//创建UDP套接字
	SOCKET sockCli=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(600);

	SOCKADDR_IN addrCli;
	int len=sizeof(SOCKADDR);

	char sendBuf[]="Send from udp client...";
	char recvBuf[100];

	std::cout<<"send to server:"<<sendBuf<<std::endl;
	//发送数据
	sendto(sockCli, sendBuf, strlen(sendBuf) + 1, 0, (SOCKADDR*)& addrSrv, len);
	recvfrom(sockCli, recvBuf, 100, 0, (SOCKADDR*)& addrSrv, &len);

	std::cout << recvBuf << std::endl;

	closesocket(sockCli);
	WSACleanup();

	system("pause");
	return 0;

}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月22日 0

暂无评论

推荐阅读
  8Tw5Riv1mGFK   20天前   31   0   0 C++
  BYaHC1OPAeY4   13天前   33   0   0 C++
  yZdUbUDB8h5t   16天前   22   0   0 C++
  oXKBKZoQY2lx   4天前   16   0   0 C++
5Z6Aj0LQwRjK