这是C++ SOCKET网络程序中的C/S结构之UDP "Hello World !",共两个控制台工程:

  1. //
  2. // UDPServer.cpp
  3. #include <stdio.h>
  4. #include <WINSOCK2.H>
  5. #pragma comment(lib,"WS2_32.lib")
  6. #define BUF_SIZE    64
  7. int main(void)
  8. {
  9. WSADATA wsd;
  10. SOCKET  s;
  11. int     nRet;
  12. // 初始化套接字动态库
  13. if(WSAStartup(MAKEWORD(2,2),&wsd) != 0)
  14. {
  15. printf("WSAStartup failed !/n");
  16. return 1;
  17. }
  18. // 创建套接字
  19. s = socket(AF_INET,SOCK_DGRAM,0);
  20. if(s == INVALID_SOCKET)
  21. {
  22. printf("socket() failed ,Error Code:%d/n",WSAGetLastError());
  23. WSACleanup();
  24. return 1;
  25. }
  26. SOCKET      socketSrv = socket(AF_INET,SOCK_DGRAM,0);
  27. SOCKADDR_IN addrSrv;
  28. SOCKADDR_IN addrClient;
  29. char        buf[BUF_SIZE];
  30. int         len = sizeof(SOCKADDR);
  31. // 设置服务器地址
  32. ZeroMemory(buf,BUF_SIZE);
  33. addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
  34. addrSrv.sin_family = AF_INET;
  35. addrSrv.sin_port = htons(5000);
  36. // 绑定套接字
  37. nRet = bind(socketSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
  38. if(SOCKET_ERROR == nRet)
  39. {
  40. printf("bind failed !/n");
  41. closesocket(s);
  42. WSACleanup();
  43. return -1;
  44. }
  45. // 从客户端接收数据
  46. nRet = recvfrom(socketSrv,buf,BUF_SIZE,0,(SOCKADDR*)&addrClient,&len);
  47. if(SOCKET_ERROR == nRet)
  48. {
  49. printf("recvfrom failed !/n");
  50. closesocket(s);
  51. WSACleanup();
  52. return -1;
  53. }
  54. // 打印来自客户端发送来的数据
  55. printf("Recv From Client:%s/n",buf);
  56. // 向客户端发送数据
  57. sendto(socketSrv,"UDP Hello World !",sizeof("UDP Hello World !"),0,(SOCKADDR*)&addrClient,len);
  58. closesocket(s);
  59. WSACleanup();
  60. return 0;
  61. }
  1. //
  2. // UDPClient.cpp
  3. #include <stdio.h>
  4. #include <WINSOCK2.H>
  5. #pragma comment(lib,"WS2_32.lib")
  6. #define BUF_SIZE    64
  7. int main(void)
  8. {
  9. WSADATA wsd;
  10. SOCKET  s;
  11. // 初始化套接字动态库
  12. if(WSAStartup(MAKEWORD(2,2),&wsd) != 0)
  13. {
  14. printf("WSAStartup failed !/n");
  15. return 1;
  16. }
  17. // 创建套接字
  18. s = socket(AF_INET,SOCK_DGRAM,0);
  19. if(s == INVALID_SOCKET)
  20. {
  21. printf("socket() failed, Error Code:%d/n",WSAGetLastError());
  22. WSACleanup();
  23. return 1;
  24. }
  25. char        buf[BUF_SIZE];  // 接受数据
  26. SOCKADDR_IN servAddr;       // 服务器套接字地址
  27. SOCKET      sockClient = socket(AF_INET,SOCK_DGRAM,0);
  28. int         nRet;
  29. ZeroMemory(buf,BUF_SIZE);
  30. strcpy(buf,"UDP Hello World !");
  31. // 设置服务器地址
  32. servAddr.sin_family = AF_INET;
  33. servAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.254");
  34. servAddr.sin_port = htons(5000);
  35. // 向服务器发送数据
  36. int nServAddLen = sizeof(servAddr);
  37. if(sendto(sockClient,buf,BUF_SIZE,0,(sockaddr *)&servAddr,nServAddLen) == SOCKET_ERROR)
  38. {
  39. printf("recvfrom() failed:%d/n",WSAGetLastError());
  40. closesocket(s);
  41. WSACleanup();
  42. return 1;
  43. }
  44. nRet = recvfrom(sockClient,buf,BUF_SIZE,0,(sockaddr *)&servAddr,&nServAddLen);
  45. if(SOCKET_ERROR == nRet)
  46. {
  47. printf("recvfrom failed !/n");
  48. closesocket(s);
  49. WSACleanup();
  50. return -1;
  51. }
  52. // 打印来自服务端发送来的数据
  53. printf("Recv From Server:%s/n",buf);
  54. closesocket(s);
  55. WSACleanup();
  56. return 0;
  57. }

程序运行效果:

源代码下载地址:

http://www.rayfile.com/files/733c832e-a2d8-11de-a838-0014221b798a/

http://blog.csdn.net/wangningyu/article/details/4560835

C++ Socket UDP范例相关推荐

  1. c语言linux TCP长连接 socket收发范例 断开自动重连

    原文链接:https://blog.csdn.net/chenhao0568/article/details/103420615 c语言linux TCP长连接 socket收发范例 断开自动重连 改 ...

  2. Python多人聊天室-基于socket UDP协议

    简介 使用Python编写的基于socket UDP通信的多功能即时聊天室,包含Tkinter编写的图形化聊天界面,功能包括有账号注册和登录,登录成功后可以查看在线用户,并和聊天室内的其他在线用户聊天 ...

  3. Socket UDP、TCP 简介

    文章目录 Socket UDP.TCP 简介 1.1 Java 获取 IP.URL 1.2 UDP 服务端\客户端 1.3 TCP 服务端/客户端 Socket UDP.TCP 简介 1.1 Java ...

  4. ios 接收 c# socket udp 组播

    最近用wcf 服务 给ios和安卓做接口,做了几个ios的项目  用udp 组播 让ios多终端接收和刷新方法 做一个简单的小例子会把工程给大家下载的 c#代码:netSocketUDP.rar io ...

  5. socket udp

    2019独角兽企业重金招聘Python工程师标准>>> 基于udp的socket编程第三方库,需导入头文件 AsycUdpSocket.h 服务器端: //1.初始化serverso ...

  6. python socket sendto sendall_网络通信 Python Socket UDP Select

    前言 工作中遇到各种各样的网络通信.有MQTT和CoAP这样的物联网应用层协议,也有各种自定义的TCP或UDP协议.使用各种不同的计算机语言和框架开发网络通信,例如Java的Netty框架,C语言原始 ...

  7. Python网络编程(1.利用socket(udp)+网络调试助手,发送数据)

    1.socket(简称 套接字)  是进制间通信的一种方式,它与其他进程间通信的一个主要不同是: 它能实现不同主机间的进程间通信,我们网络上各种各样的服务器大多数都是基于Socket 来完成通信的 2 ...

  8. Socket UDP无连接通信

    从Socket接收数据报:recvfrom 从一个UDPsocket中接收数据通过recvfrom函数来获得通过代替者recv函数: ssize_t recvfrom(int socketDescri ...

  9. 让人迷糊的 socket udp 连接问题

    公司内部的一个 golang 中间件报 UDP 连接异常的日志,问题很明显,对端的服务挂了,自然重启下就可以了. 哈哈,但让我疑惑的问题是 udp 是如何检测对端挂了? err: write udp ...

最新文章

  1. Linux下为什么ls直接就可以运行,而你的程序要写./dir1/dir2/bin/bwa才可以
  2. iOS开发UI篇—核心动画简介
  3. C++STL常用集合算法
  4. Zookeeper基础使用机制原理
  5. 注释嵌套注释_注释,无处不在的注释
  6. LeetCode 29. 两数相除(位运算)
  7. Literal Web 服务器控件
  8. 【第一组】beta发行说明
  9. 树莓派配置RTC时钟(DS3231,I2C接口)
  10. flume学习(九):使用Morphline Interceptor
  11. 比特鹏哥第一节课笔记
  12. guid主分区表损坏如何处理_【硬盘分区表错误】硬盘分区表错误原因_硬盘分区表损坏...
  13. wr885n虚拟服务器设置,TP-Link TL-WR885N V4路由器上网设置方法
  14. 数独解法/n皇后的回溯算法
  15. 由浅入深学习Flash制作赛车游戏教程
  16. 哔哩哔哩(bilibili)视频下载-支持4K
  17. ToolsOh第6批收录
  18. 关于 Redlock 的讨论
  19. pfx格式密钥库修改密码
  20. 开区网站打开自动播放音乐的添加跟修改教程

热门文章

  1. 酷炫!用Python把桌面变成实时更新的地球图片
  2. C语言的选择排序,你知道原理吗?
  3. jiamimao – 文件加密最简法门
  4. 高中时就经济独立是一种什么样的体验?
  5. 举例说明SQL中 in和exists的区别
  6. 在 Tegra K1 上用opencv4tegra 不包含的功能以及ROS使用OpenCV问题
  7. Linux实现热补丁
  8. TIPTOP 实现T100程序模糊查询功能
  9. 《光晕:斯巴达进攻》正式登陆Windows Phone及Windows 8.1平台
  10. 名画50 张择端《清明上河图》