【在Linux天下中追寻巨大的One Piece】网络命令|验证UDP

打印 上一主题 下一主题

主题 1935|帖子 1935|积分 5805

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目录
1 -> Ping命令
2 -> Netstat命令
3 -> Pidof命令
4 -> 验证UDP-Windows作为client访问Linux
4.1 -> UDP client样例


1 -> Ping命令

Ping命令是一种网络诊断工具,它利用ICMP(Internet Control Message Protocol,互联网控制消息协议)来检测网络连接。当您实行ping命令时,它会向指定的主机发送一系列的ICMP回显请求(echo request)消息,并等候接收ICMP回显响应(echo reply)消息。通太过析这些响应,您可以判定目标主机是否可达以及网络的响应时间等信息。
      $ ping www.qq.com        $ ping -c 5 www.qq.com        PING ins-r23tsuuf.ias.tencent-cloud.net (121.14.77.221) 56(84)        bytes of data.        64 bytes from 121.14.77.221 (121.14.77.221): icmp_seq=1 ttl=48        time=35.1 ms        64 bytes from 121.14.77.221 (121.14.77.221): icmp_seq=2 ttl=48        time=35.1 ms        64 bytes from 121.14.77.221 (121.14.77.221): icmp_seq=3 ttl=48        time=35.1 ms        64 bytes from 121.14.77.221 (121.14.77.221): icmp_seq=4 ttl=48        time=35.1 ms        64 bytes from 121.14.77.221 (121.14.77.221): icmp_seq=5 ttl=48        time=35.1 ms        --- ins-r23tsuuf.ias.tencent-cloud.net ping statistics ---        5 packets transmitted, 5 received, 0% packet loss, time 4005ms    2 -> Netstat命令

Netstat是一个网络实用工具,它用于显示网络连接、路由表、接口统计信息等。通过Netstat命令,用户可以获取关于网络配置和状态的具体信息,这对于网络故障排除和系统管理非常有用。
常用选项:


  • -a:显示全部活动的网络连接和监听端口。
  • -t:仅显示TCP连接。
  • -u:仅显示UDP连接。
  • -n:以数字形式显示网络地址和端标语,不进行域名剖析。
  • -r:显示路由表。
  • -l:显示全部监听端口。
  • -p:显示建立每个网络连接的进程标识符(PID)和程序名称。
  • -s:按协议显示网络统计信息。
  • -i:显示网络接口统计信息。
  • -c:连续显示网络状态,直到手动停止。
      // 每个 1s 实行一次 netstat -nltp        $ watch -n 1 netstat -nltp    3 -> Pidof命令

Pidof命令用于在Linux系统中查找指定名称的进程的进程ID(PID)。这个命令通常用于脚本中,以确定特定的程序是否正在运行,或者在启动或停止服务之前获取其PID。
常用选项:


  • -s:仅返回一个PID,纵然程序有多个实例在运行。
  • -c:只返回在同一个根目录下运行的进程的PID。
  • -x:返回运行指定脚本的shell的进程ID。
  • -o:指定不显示的进程ID。
4 -> 验证UDP-Windows作为client访问Linux

4.1 -> UDP client样例

  1. #define _CRT_SECURE_NO_WARNINGS 1
  2. #include <iostream>
  3. #include <cstdio>
  4. #include <thread>
  5. #include <string>
  6. #include <cstdlib>
  7. #include <WinSock2.h>
  8. #include <Windows.h>
  9. #pragma warning(disable : 4996)
  10. #pragma comment(lib, "ws2_32.lib")
  11. std::string serverip = ""; // 填写你的云服务器 ip
  12. uint16_t serverport = 8888; // 填写你的云服务开放的端口号
  13. int main()
  14. {
  15.         WSADATA wsd;
  16.         WSAStartup(MAKEWORD(2, 2), &wsd);
  17.         struct sockaddr_in server;
  18.         memset(&server, 0, sizeof(server));
  19.         server.sin_family = AF_INET;
  20.         server.sin_port = htons(serverport); //?
  21.         server.sin_addr.s_addr = inet_addr(serverip.c_str());
  22.         SOCKET sockfd = socket(AF_INET, SOCK_DGRAM, 0);
  23.         if (sockfd == SOCKET_ERROR)
  24.         {
  25.                 std::cout << "socker error" << std::endl;
  26.                 return 1;
  27.         }
  28.         std::string message;
  29.         char buffer[1024];
  30.         while (true)
  31.         {
  32.                 std::cout << "Please Enter@ ";
  33.                 std::getline(std::cin, message);
  34.                 if (message.empty())
  35.                         continue;
  36.                 sendto(sockfd, message.c_str(), (int)message.size(), 0,
  37.                         (struct sockaddr*)&server, sizeof(server));
  38.                 struct sockaddr_in temp;
  39.                 int len = sizeof(temp);
  40.                 int s = recvfrom(sockfd, buffer, 1023, 0, (struct sockaddr
  41.                         *)&temp, &len);
  42.                 if (s > 0)
  43.                 {
  44.                         buffer[s] = 0;
  45.                         std::cout << buffer << std::endl;
  46.                 }
  47.         }
  48.         closesocket(sockfd);
  49.         WSACleanup();
  50.         return 0;
  51. }
复制代码
留意:


  • 一定要开放云服务器对应的端标语,在你的阿里云或者腾讯云或者华为云的网站背景中开放。
  • 我们发现可以udp tcpclient(Windows)和tcpserver(Linux)可以通信。
      WinSock2.h是 Windows Sockets API(应用程序接口)的头文件,用于在Windows平台上进行网络编程。它包罗了Windows Sockets 2(Winsock2)所需的数据范例、函数声明和结构定义,使得开发者能够创建和利用套接字(sockets)进行网络通信。          在编写利用Winsock2的程序时,需要在源文件中包罗WinSock2.h头文件。如许,编译器就能够识别并明白Winsock2中定义的数据范例和函数,从而能够正确地编译和链接网络相关的代码。         别的,与WinSock2.h头文件相对应的是ws2_32.lib库文件。在链接阶段,需要 将这个库文件链接到程序中,以确保运行时能够找到并调用Winsock2 API中实现的函数。          在WinSock2.h中定义了一些重要的数据范例和函数,如:     

  • WSADATA:保存初始化Winsock库时返回的信息。
  • SOCKET:表示一个套接字描述符,用于在网络中唯一标识一个套接字。
  • sockaddr_in:IPv4地址结构体,用于存储IP地址和端标语等信息。
  • socket():创建一个新的套接字。
  • bind():将套接字与本地地址绑定。
  • listen():将套接字设置为监听模式,等候客户端的连接请求。
  • accept():接受客户端的连接请求,并返回一个新的套接字描述符,用于与客户端 进行通信。
    WSAStartup函数是Windows Sockets API的初始化函数,它用于初始化Winsock库。该函数在应用程序或DLL调用任何Windows套接字函数之前必须首先实行,它饰演着初始化的脚色。
  
以下是WSAStartup函数的一些关键点:
它接受两个参数:wVersionRequested 和 lpWSAData。wVersionRequested用于指定所请求的Winsock版本,通常利用MAKEWORD(major, minor)宏,此中major和minor分别表示请求的主版本号和次版本号。
  
  lpWSAData是一个指向WSADATA结构的指针,用于接收初始化信息。如果函数调用成功,它会返回 0;否则,返回错误代码。
  
WSAStartup函数的重要作用是向操作系统分析我们将利用哪个版本的Winsock库,从而使得该库文件能与当前的操作系统协同工作。成功调用该函数后,Winsock库的状态会被初始化,应用程序就可以利用 Winsock提供的一系列套接字服务,如地址家属识别、地址转换、名字查询和连接控制等。
  
  这些服务使得应用程序可以与底层的网络协议栈进行交互,实现网络通信。在调用 WSAStartup函数后,如果应用程序完成了对请求的Socket库的利用,应调用WSACleanup函数来解除与Socket库的绑定并释放所占用的系统资源。
  


感谢各位大佬支持!!!

互三啦!!!




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表