嵌入式上位机开发入门(六):UDP 编程 —— Client 端实现

张开发
2026/4/18 15:26:24 15 分钟阅读

分享文章

嵌入式上位机开发入门(六):UDP 编程 —— Client 端实现
目录一、前言二、UDP Client 通信流程三、完整代码实现四、代码解析五、运行与测试六、总结七、结尾一、前言大家好这里是Hello_Embed。前一篇我们实现了 UDP Server 端本篇来编写UDP 客户端。UDP Client 端的流程比 Server 端更简单甚至比 TCP Client 还要简洁——不需要connect直接发送数据即可。二、UDP Client 通信流程UDP Client 端只需三个步骤步骤函数说明1socket创建套接字2sendto / recvfrom收发数据3close关闭套接字与 TCP Client 的区别UDP 不需要connect建立连接也不需要bind绑定本地地址直接使用sendto发送数据即可。三、完整代码实现#define_WIN32_WINNT0x0600#includeiostream#includeWinSock2.h#includews2tcpip.h#pragmacomment(lib,Ws2_32.lib)#defineSERVER_PORT8888intmain(intargc,char**argv){WSADATA wsa;intiSocketClient;structsockaddr_intSocketServerAddr;characSendBuf[1024]{0};if(argc!2){printf(Usage:\n);printf(%s server_ip\n,argv[0]);return-1;}if(WSAStartup(MAKEWORD(2,2),wsa)!0)return-1;//第一步创建socketiSocketClient(int)socket(AF_INET,SOCK_DGRAM,0);tSocketServerAddr.sin_familyAF_INET;tSocketServerAddr.sin_porthtons(SERVER_PORT);intrcinet_pton(tSocketServerAddr.sin_family,argv[1],tSocketServerAddr.sin_addr);if(rc0){printf(invalid address\n);return-1;}memset(tSocketServerAddr.sin_zero,0,sizeof(tSocketServerAddr.sin_zero));//第二步发送数据while(1){if(fgets(acSendBuf,1024,stdin)){intiAddrLensizeof(tSocketServerAddr);intiSendLensendto(iSocketClient,acSendBuf,(int)strlen(acSendBuf),0,(conststructsockaddr*)tSocketServerAddr,iAddrLen);}}//第三步关闭socketclosesocket(iSocketClient);return0;}四、代码解析1. 创建 UDP 套接字iSocketClient(int)socket(AF_INET,SOCK_DGRAM,0);SOCK_DGRAM表示使用 UDP 数据报模式与 TCP 的SOCK_STREAM对应。2. 配置服务器地址tSocketServerAddr.sin_familyAF_INET;tSocketServerAddr.sin_porthtons(SERVER_PORT);intrcinet_pton(tSocketServerAddr.sin_family,argv[1],tSocketServerAddr.sin_addr);Client 端需要知道服务器的 IP 和端口通过命令行参数argv[1]传入。3. 发送数据sendtointiSendLensendto(iSocketClient,acSendBuf,(int)strlen(acSendBuf),0,(conststructsockaddr*)tSocketServerAddr,iAddrLen);sendto每次发送都需要指定目标地址这是 UDP 无连接特性的体现——每个数据包都可以发送给不同的目标。五、运行与测试运行方式在终端执行以下命令udp_client_test.exe是生成的程序名根据实际情况调整.\udp_client_test.exe127.0.0.1测试一终端与 SSCOM确保 SSCOM 选中UDP 模式本地端口设置为8888运行 Client 程序发送数据测试无需连接即可直接通信测试二终端与终端打开上一篇笔记实现的 UDP Server 端Client 端可以与之通信六、总结对比项UDP ClientTCP Client创建套接字socket(AF_INET, SOCK_DGRAM, 0)socket(AF_INET, SOCK_STREAM, 0)建立连接无需connect发送数据sendto需指定目标地址send已建立连接接收数据recvfrom获取发送方地址recvUDP Client 的核心是直接发送无需建立连接每个数据包独立传输。七、结尾至此TCP 和 UDP 的 Server/Client 编程已全部完成。后续篇章将结合实际场景探索更多上位机开发的应用技巧。Hello_Embed继续带你从原理到实践掌握嵌入式上位机开发的核心技能敬请关注

更多文章