udp服务器源码⼤全,简单UDP服务器端和客户端(源代码)增
加了详细注解
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. }
完结。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论