当前位置: 首页 > news >正文

【在Linux世界中追寻伟大的One Piece】网络命令|验证UDP

目录

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样例

#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>
#include <cstdio>
#include <thread>
#include <string>
#include <cstdlib>
#include <WinSock2.h>
#include <Windows.h>#pragma warning(disable : 4996)
#pragma comment(lib, "ws2_32.lib")std::string serverip = ""; // 填写你的云服务器 ip
uint16_t serverport = 8888; // 填写你的云服务开放的端口号int main()
{WSADATA wsd;WSAStartup(MAKEWORD(2, 2), &wsd);struct sockaddr_in server;memset(&server, 0, sizeof(server));server.sin_family = AF_INET;server.sin_port = htons(serverport); //?server.sin_addr.s_addr = inet_addr(serverip.c_str());SOCKET sockfd = socket(AF_INET, SOCK_DGRAM, 0);if (sockfd == SOCKET_ERROR){std::cout << "socker error" << std::endl;return 1;}std::string message;char buffer[1024];while (true){std::cout << "Please Enter@ ";std::getline(std::cin, message);if (message.empty()) continue;sendto(sockfd, message.c_str(), (int)message.size(), 0,(struct sockaddr*)&server, sizeof(server));struct sockaddr_in temp;int len = sizeof(temp);int s = recvfrom(sockfd, buffer, 1023, 0, (struct sockaddr*)&temp, &len);if (s > 0){buffer[s] = 0;std::cout << buffer << std::endl;}}closesocket(sockfd);WSACleanup();return 0;
}

注意:

  • 一定要开放云服务器对应的端口号,在你的阿里云或者腾讯云或者华为云的网站后台中开放。
  • 我们发现可以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库的绑定并释放所占用的系统资源。


感谢各位大佬支持!!!

互三啦!!!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vue3-print打印eletable某一行的数据
  • Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用(text2sql)
  • GPT对话知识库——串口通信的数据的组成?起始位是高电平还是低电平?如何用代码在 FreeRTOS 中实现串口通信吗?如何处理串口通信中的数据帧校验吗?
  • 【CSS|第1期】网页设计的演变:从表格布局到Grid布局
  • Lombok:Java开发者的代码简化神器【后端 17】
  • CSS3中的@media查询
  • Go websocket
  • 什么是上拉,下拉?
  • Promise查漏及回调地狱结构优化
  • 嵌入式AI---如何用C++实现YOLO的NMS(非极大值抑制)算法
  • 【Kubernetes】常见面试题汇总(十三)
  • 5.1 溪降技术:个人装备
  • 04_Python数据类型_列表
  • 【运维监控】Prometheus+grafana+kafka_exporter监控kafka运行情况
  • linux 操作系统下的cut命令介绍和使用案例
  • php的引用
  • [数据结构]链表的实现在PHP中
  • 【css3】浏览器内核及其兼容性
  • Android Studio:GIT提交项目到远程仓库
  • java概述
  • Java知识点总结(JavaIO-打印流)
  • JS+CSS实现数字滚动
  • Koa2 之文件上传下载
  • opencv python Meanshift 和 Camshift
  • select2 取值 遍历 设置默认值
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Spring-boot 启动时碰到的错误
  • webgl (原生)基础入门指南【一】
  • 订阅Forge Viewer所有的事件
  • 服务器从安装到部署全过程(二)
  • 如何使用 JavaScript 解析 URL
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 用简单代码看卷积组块发展
  • 源码安装memcached和php memcache扩展
  • 运行时添加log4j2的appender
  • 智能合约开发环境搭建及Hello World合约
  • 7行Python代码的人脸识别
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​【已解决】npm install​卡主不动的情况
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (7)STL算法之交换赋值
  • (9)STL算法之逆转旋转
  • (Java入门)学生管理系统
  • (备份) esp32 GPIO
  • (笔记)M1使用hombrew安装qemu
  • (二)Linux——Linux常用指令
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .NET C# 使用 iText 生成PDF
  • .Net Core 中间件验签
  • .net 发送邮件
  • .net 使用ajax控件后如何调用前端脚本