3. #include //一定要包含该头文件因为该头文件包含了socket api函数声名

4.

5. using namespace std;

6.

7. #pragma comment(lib, "WS2_32.lib")  //windwows下的socket编程函数库

8.

9.

10. class CInitSock

11. {

12. public:

13.     CInitSock(int version01 = 2, int versiont02 = 2)

14.     {

15.       WORD sockVersion = MAKEWORD(2, 2); //声名一个存放windows网络编程库的版本号信息的数据

16.         WSADATA wsaData = {0};

17.

//WSAStartup函数是在程序中初始化并加载Windows网络

//编程库的ws2_32.dll动态库文件。这个很重要。

18.         if (WSAStartup(sockVersion, &wsaData) != 0)

19.         {

20.             cout <

21.

22.             exit(0); //如果WSAStartup返回值为1的话就表示ws2_32.dll文件有问题,程序退出

23.         }

24.

25.     }

26.

27.     ~CInitSock()

28.     {

29.         WSACleanup();  //在析构CInitSock类时释放ws2_32.dll动态库

30.     }

31. };

32.

33. CInitSock mysock;

34.

35. int main()

36. {

37.     SOCKET  s = 0;  //声明一个UDP通信的socket数据结构

38.     sockaddr_in sin = {0};   //声名一个socket编程类型的网络地址数据结构以便connect函数对本

//机创建的socket数据结构进行初始化。

39.

40.     sin.sin_family = AF_INET; //设置网络协议族类型

41.     sin.sin_port = htons(4567);  //设置本地计算机的端口号

42.     sin.sin_addr.S_un.S_addr = INADDR_ANY; //设置本地计算机的IP地址

43.

44.     s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);  //在本机上创建一个socket

45.

//使用bind函数绑定本机的ip和打开端口到本机创建的socket结构上,并初始化该socket

//重点说明一个在服务器上是用bind函数来初始化socket,在UDP通信程序中客户端不需初始化

//socket

46.     if (bind(s, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)

47.     {

48.         cout

50.         return 0;  //如果socket绑定失败返回程序0并退出程序

51.     }

52.

53.     char  buffer[1024] = "\0";  //向数据缓存区的未尾添加一个字符串结束符

54.     sockaddr_in addr  = {0};  //声名一个socket编程类型的网络地址数据结构用来保存从网络接收

//到的数据的发送端IP地址和端口号

55.     int  nLen  = 0;

56.

57.     nLen = sizeof(sockaddr_in);

58.

59.     cout

61.     while (true)

62.     {

63.         int nRecv = 0;

64.

65.         cout

//recvfrom是UDP通讯程序的接收函数,recv是TCP程序的接收函数来的。

//其中recvfrom函数个个参数的意义如下:

//s是一个本机创建的socket结构来的

//buffer是本机用来存放接收到的网络数据的缓冲区

//1024是指定这个接收缓冲区(这里指buffer)的大小

//addr就是一个sockaddr的结构

//nLen是指示从网络上接收数据包的实际字节长度

67.         nRecv = recvfrom(s, buffer, 1024, 0, (sockaddr*)&addr, &nLen);

68.

69.         if (nRecv > 0)  //判断是否有数据接收到,如果nRecv大于0就表示接收来数据

70.         {

71.             buffer[nRecv] = '\0';

72.

73.             cout

75.     }

76.

77.     closesocket(s);  //关闭这个以经打开的socket结构

78. }

完结。

udp服务器源码大全,简单UDP服务器端和客户端(源代码) 增加了详细注解相关推荐

  1. 易语言udp服务器广播,易语言UDP测试源码

    易语言UDP测试源码系统结构:监听子程序,输出文本,取字节集和,UDP发送,UDP发送线程,UDP连发PING,TCP连发PING,服务器1发送数据,客户1发送数据,TCP发送线程,数据到达, === ...

  2. 小程序源码:AI微信小程序源码下载人脸照片AI转换动漫照片全新源码安装简单无需服务器域名-多玩法安装简单

    这是一款AI人脸转动漫的一款微信小程序源码 该款小程序源码无需服务器和域名 搭建安装简单 有多种风格转换模式可自选 安装教程: 首先解压源码然后把源码上传到微信开发者工具打开 另外设置一个合法域名 合 ...

  3. SRS(simple-rtmp-server)流媒体服务器源码分析--启动

    SRS(simple-rtmp-server)流媒体服务器源码分析--系统启动 一.前言 小卒最近看SRS源码,随手写下博客,其一为了整理思路,其二也是为日后翻看方便.如果不足之处,请指教! 首先总结 ...

  4. C语言项目源码,C语言源码大全

    一.C语言源码大全 C语言是一门通用计算机编程语言,广泛应用于底层开发.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.尽管 ...

  5. lua文件服务器,lua游戏服务器源码

    lua游戏服务器源码 内容精选 换一换 简要介绍Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能.语言:C一 ...

  6. Java文件操作源码大全

    Java文件操作源码大全 1.创建文件夹 5 2.创建文件 5 3.删除文件 5 4.删除文件夹 6 5.删除一个文件下夹所有的文件夹 7 6.清空文件夹 8 7.读取文件 8 8.写入文件 9 9. ...

  7. 微信小程序实例源码大全demo下载

    怎么本地测试微信小程序实例源码 1.下载源码 2.打开微信开发者工具 3.添加项目->选择本项目目录->编译执行 微信小程序实例源码大全 微信小程序游戏类demo:识色:从相似颜色中挑选不 ...

  8. 全新UI任务悬赏抢单源码-附带简单安装教程

    任务悬赏系统.任务悬赏抢单系统-附带安装文档 安装说明:(具体安装说明以压缩包内为准) 服务器:Linux+Centos7.0+PHP5.6-7.0以上+宝塔 1.上传源码文件,上传数据库文件 2.修 ...

  9. 采集网站服务器配置,搭建数据采集云服务器源码

    搭建数据采集云服务器源码 内容精选 换一换 云速建站暂不支持自主搭建代码,您可以考虑通过添加高级代码插件实现相关功能.云速建站是一套基于SaaS模式的建站系统,使用的是云服务平台,不止是一台服务器,一 ...

最新文章

  1. java list移除所有元素,从List中移除指定 List 中包含的其所有元素(可选操作)。...
  2. day24-1 元类
  3. 谷歌chrome xp_将非Google任务列表添加到Chrome
  4. Postgre合并多行数据为一行
  5. 小米回应“米家”商标争议;人人 App 回归社交市场;TiDB 2.1.19 发布| 极客头条...
  6. 51nod1464(trie + dfs)
  7. 万能声卡驱动win10_Windows系统杜比驱动安装教程
  8. 简单理解:类目、SPU、SKU
  9. 网站跳出率是什么?如何降低网站跳出率?
  10. 【hexo】基础教程-六-添加百度统计和Google统计
  11. Lowest, highest?
  12. Cisco 路由器密码重置步骤
  13. wincc c 语言改颜色,wincc常用c脚本小草设置
  14. Unix BSD Linux的口令机制初探
  15. 音视频编解码技术之视频编码基本概念介绍
  16. springboot大学生就业管理系统毕业设计源码290915
  17. 平安好医生遭遇困局:六年亏近47亿元 价值百亿品牌或被舍弃
  18. 【转载】显卡PM手记-----4850显卡的诞生
  19. Ant Design of Vue 中 日期时间控件 禁止选中的(日期——)设置
  20. 猕猴桃新闻-外媒曝津巴布韦奥运未得牌 总统下令逮捕全队

热门文章

  1. selenium配置无界面chrome浏览器
  2. java arraylist排序_一文读懂Java集合框架
  3. systemctl自定义service
  4. Ubuntu / Debian / Deepin等 Sublime Text 3 配置C++环境(一键编译运行,格式化代码)
  5. 运输层的多路复用于多路分解
  6. $.ajax() IE 兼容问题
  7. 编译hibernate源代码
  8. Kendo Web UI Grid里时间格式转换
  9. 五种开源协议的比较(BSD_Apache_GPL_LGPL_MIT)
  10. ServiceMash服务网格--理解lstio/envoy