栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

套接字实现UDP通讯,客户端以及服务端

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

套接字实现UDP通讯,客户端以及服务端

服务端

#include 

#include 
#include 
#pragma comment(lib,"Ws2_32.lib")

int main()
{
	//加载套接字
	WORD wVersionRequested;
	WSADATA wsaData;
	int err;

	wVersionRequested = MAKEWORD(1,1);

	err = WSAStartup(wVersionRequested, &wsaData);
	if (err != 0)
	{
		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(6000);

	//绑定套接字
	bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
	char recvBuf[100];
	char sendBuf[100];
	char tempBuf[200];
	char str[INET_ADDRSTRLEN];
	SOCKADDR_IN addrClient;
	int len = sizeof(SOCKADDR);

	while (1)
	{
		//等待并接收数据
		recvfrom(sockSrv, recvBuf, 100, 0, (SOCKADDR*)&addrClient, &len);
		if ('q' == recvBuf[0])
		{
			sendto(sockSrv, "q", strlen("q") + 1, 0, (SOCKADDR*)&addrClient, len);
			printf("结束");
			break;
		}
		sprintf_s(tempBuf, 200, "%s say:%s", inet_ntop(AF_INET, &addrClient.sin_addr, str, sizeof(str)), recvBuf);
		printf("%sn", tempBuf);

		//发送数据
		printf("请输入数据:n");
		gets_s(sendBuf);
		sendto(sockSrv, sendBuf, strlen(sendBuf) + 1, 0, (SOCKADDR*)&addrClient, len);
	}
	//关闭套接字
	closesocket(sockSrv);
	WSACleanup();	
	return 1;
}

客户端

#include 
#include 
#pragma comment(lib,"Ws2_32.lib")
#include 

int main()
{
	//加载套接字
	WORD wVersionRequested;
	WSADATA wsaData;
	int err;

	wVersionRequested = MAKEWORD(1, 1);

	err = WSAStartup(wVersionRequested, &wsaData);
	if (err != 0)
	{
		return -1;
	}
	
	//创建套接字
	SOCKET sockClient = socket(AF_INET, SOCK_DGRAM, 0);

	SOCKADDR_IN addrSrv;
	inet_pton(AF_INET, "127.0.0.1", &addrSrv.sin_addr);
	addrSrv.sin_family = AF_INET;
	addrSrv.sin_port = htons(6000);


	char recvBuf[100];
	char sendBuf[100];
	char tempBuf[200];
	char str[INET_ADDRSTRLEN];
	int len = sizeof(SOCKADDR);
	while (1)
	{
		//发送数据
		printf("请输入数据:n");
		gets_s(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_s("结束");
			break;
		}
		sprintf_s(tempBuf,200,"%s say:%s",inet_ntop(AF_INET,&addrSrv.sin_addr,str,sizeof(str)),recvBuf);
		printf("%sn",tempBuf);
	}
	//关闭套接字
	closesocket(sockClient);
	WSACleanup();
	return 1;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/676768.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号