当前位置: 首页 > news >正文

Windows—UDP编程

Client骨架:

#include <iostream>
#include <WinSock2.h>
#pragma  comment(lib,"ws2_32.lib")int main()
{//启动Winsock DLLWORD wVersionRequested = MAKEWORD(2, 2);WSADATA lpWSAData;WSAStartup(wVersionRequested, &lpWSAData);//初始化并设置目标套接字地址SOCKADDR_IN saddr{ 0 };saddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");saddr.sin_family = AF_INET;saddr.sin_port = htons(50123);//本进程创建一个套接字,类型为UDPSOCKET sClient = socket(AF_INET, SOCK_DGRAM, 0);//设置本进程套接字的选项,使其可以重用地址char bOptVal = FALSE;int bOptLen = sizeof(BOOL);setsockopt(sClient, SOL_SOCKET, SO_REUSEADDR, &bOptVal, bOptLen);char buffer[MAX_PATH]{ 0 };int length = sizeof(saddr);while (true){scanf_s("%s", buffer, sizeof(buffer)/sizeof(char));//通过本进程的套接字sRet,把buffer发送到目标套接字sendto(sClient, buffer, sizeof(buffer), 0, (sockaddr*)&saddr, sizeof(saddr));memset(buffer, 0, sizeof(buffer));recvfrom(sClient, buffer, sizeof(buffer), 0, (PSOCKADDR)&saddr, &length);printf("Seriver:%s\n", buffer);}//清理closesocket(sClient);WSACleanup();system("pause");return 0;
}

Service骨架:

#include <iostream>
#include <WinSock2.h>
#pragma  comment(lib,"ws2_32.lib")int main()
{//启动Winsock DLLWORD wVersionRequested = MAKEWORD(2, 2);WSADATA lpWSAData;WSAStartup(wVersionRequested, &lpWSAData);//初始化并设置本进程套接字地址SOCKADDR_IN saddr{ 0 };saddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);saddr.sin_family = AF_INET;saddr.sin_port = htons(50123);//本进程创建一个套接字,类型为UDPSOCKET sService = socket(AF_INET, SOCK_DGRAM, 0);//设置本进程套接字的选项,使其可以重用地址char bOptVal = FALSE;int bOptLen = sizeof(BOOL);setsockopt(sService, SOL_SOCKET, SO_REUSEADDR, &bOptVal, bOptLen);//将sock地址与本进程套接字绑定bind(sService, (PSOCKADDR)&saddr, sizeof(saddr));char buffer[MAX_PATH]{ 0 };int length = sizeof(saddr);while (true){if (recvfrom(sService, buffer, sizeof(buffer), 0, (PSOCKADDR)&saddr, &length) != -1){printf("Client:%s\n", buffer);strcpy_s(buffer, sizeof(buffer), inet_ntoa(saddr.sin_addr));printf("IP:%s\t端口:%d", buffer,saddr.sin_port);sendto(sService, "收到", strlen("收到"), 0, (PSOCKADDR)&saddr, length);}}closesocket(sService);WSACleanup();system("pause");return 0;
}


http://www.mrgr.cn/news/10187.html

相关文章:

  • 文件IO
  • [JS]精选面试题-4
  • 买对不买贵,宠物空气净化器应该怎么选才能选到好的产品
  • python的浅拷贝和深拷贝
  • 大模型16:大模型部署ChatGLM-6B
  • 计算机毕业设计推荐-基于python的摄影爱好者分享平台
  • Edge 浏览器插件开发
  • 三种相机模型总结(针孔、鱼眼、全景)
  • git 落后主分支提交
  • 如何有效激活微信陌生客户:加好友后的沟通策略!
  • C语言——函数
  • 66 IPV4/6 OSPFV2/3 实操
  • 会声会影剪辑视频收费吗,会声会影最新破解版
  • ElementUI或AntDesign拿不到对话框内元素的 ref或者dom
  • 合宙LuatOS开发板使用说明——Air700ECQ
  • 滑块自动化分析
  • 如何用Java SpringBoot实现G县乡村生活垃圾治理运输地图?
  • 领域驱动模型设计与微服务架构落地(一)
  • JS数据类型——【Map】精讲
  • 韩语每日一句柯桥学韩语韩语零基础入门外贸韩语口语