1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > udp服务器源码大全 简单UDP服务器端和客户端(源代码) 增加了详细注解

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

时间:2022-08-12 21:29:13

相关推荐

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

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

4.

5.usingnamespacestd;

6.

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

8.

9.

10.classCInitSock

11.{

12.public:

13.CInitSock(intversion01=2,intversiont02=2)

14.{

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

16.WSADATAwsaData={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.CInitSockmysock;

34.

35.intmain()

36.{

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

38.sockaddr_insin={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.return0; //如果socket绑定失败返回程序0并退出程序

51.}

52.

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

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

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

55.intnLen=0;

56.

57.nLen=sizeof(sockaddr_in);

58.

59.cout

61.while(true)

62.{

63.intnRecv=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.}

完结。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。