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

UDP(Echoserver)

网络命令

Ping 命令  

检测网络是否连通

使用方法:    ping -c 次数  网址ping -c 3  www.baidu.com

netstat  命令

netstat 是一个用来查看网络状态的重要工具.

语法:netstat [选项]

功能:查看网络状态

常用选项:

  • n 拒绝显示别名,能显示数字的全部转化成数字 
  • l 仅列出有在 Listen (监听) 的服务状态
  • p 显示建立相关链接的程序名(pid)
  • t (tcp)仅显示 tcp 相关选项
  • u (udp)仅显示 udp 相关选项
  • a (all)显示所有选项,默认不显示 LISTEN 相关
// 每个 1s 执行一次 netstat -nltp
$ watch -n 1 netstat -nltp  n 指的是次数  1指的是间隔(s)

pidof 命令

在查看服务器的进程 id 时非常方便.

语法:pidof [进程名]

功能:通过进程名, 查看进程 id

    pidof tcp_server
2958285
pidof udp_server | xargs kill -9   //杀掉进程

V1 版本 - echo server

简单的回显服务器和客户端代码

备注: 代码中会用到 地址转换函数 .

网络信息sockaddr

 struct sockaddr_in local;bzero(&local, sizeof(local));//先置零local.sin_family = AF_INET;  local.sin_port = ::htons(_port); // 要被发送给对方的,即要发到网络中!// local.sin_addr.s_addr = ::inet_addr(_ip.c_str()); // 服务器ip不用绑定 1. string ip->4bytes 2. network order //TODOlocal.sin_addr.s_addr = INADDR_ANY;

IP地址转换

inet_addr 函数会自动将点分十进制的 IPv4 地址(如 "192.168.1.1")转换为网络字节序(大端序),无论当前机器使用的是大端还是小端字节序。

inet_ntop 函数会将网络字节序(大端序)的二进制 IP 地址转换为文本格式(如点分十进制的 IPv4 或冒号分隔的 IPv6),这个过程中会自动适配当前机器的字节序。

服务器

云服务器不允许直接 bind 公有 IP,我们也不推荐编写服务器的时候,bind 明确 的 IP,推荐直接写成 INADDR_ANY,因为一个服务器可能有多个IP地址

在网络编程中,当一个进程需要绑定一个网络端口以进行通信时,可以使用 INADDR_ANY 作为 IP 地址参数。这样做意味着该端口可以接受来自任何 IP 地址的连 接请求,无论是本地主机还是远程主机。例如,如果服务器有多个网卡(每个网卡上 有不同的 IP 地址),使用 INADDR_ANY 可以省去确定数据是从服务器上具体哪个网 卡/IP 地址上面获取的

提示:我们买的云服务器的端口需要在官网防火墙打开,才能使用

客户端

client 端要不要显示 bind

如果client显示的bind端口号 ,不同公司间的client bind的端口号有可能重复 ,导致bind失败 ,所以交给OS自动bind

创建socket

bind

接收信息

发消息

sockfd 是全双工 (一个时刻 通信双方能够同时进行双向数据传输)

代码实现

http://www.xdnf.cn/news/13116.html

相关文章:

  • linux之kylin系统nginx的安装
  • 第二部分-IP及子网划分
  • BERT 位置嵌入机制与代码解析
  • Ubuntu 24.04 LTS 长期支持版发布:对服务器用户意味着什么?新特性、升级建议与性能影响初探
  • AWS S3 SDK FOR JAVA 基本使用及如何兼容七牛云
  • [Java基础] stream流中Collectors.toMap报空指针异常情况
  • CppCon 2015 学习:Time Programming Fundamentals
  • Shooter–System Performance Variability as a Function of Recoil Dynamics
  • 一般视频剪辑的硬盘配置是什么
  • AUTOSAR图解==>AUTOSAR_AP_RS_General
  • 卷积核、FIR滤波器与LTI系统——一回事
  • 高斯列主元消去法——python实现
  • Android Jetpack 系列(三) Lifecycle 生命周期感知组件详解
  • cacert.pem根证书文件
  • PydanticAI 作为 MCP 客户端示例
  • RK3568/RK3588 KVM系统虚拟化解决方案
  • WPS2024 软件下载及安装教程!
  • 关于纯java代码项目,打包jar实现方式
  • Python 训练营打卡 Day 47
  • 免布线+双向通信——电力载波技术重塑楼宇自控能效管理
  • 自建CA并生成自签名SSL证书
  • Cell的复用及自定义Cell
  • STM32嵌套向量中断控制器(NVIC)及外部中断使用案例分析
  • GAMES202-高质量实时渲染(Assignment 4)
  • 【Python基础】异常捕获知识梳理
  • Device Mapper 机制
  • Redis数据结构选择策略--String?Hash?怎么选?
  • C++ Saucer 编写Windows桌面应用
  • AI——DeepSeek+LangChain+streamlit 实现智能汽车维修服务
  • 视觉slam十四讲实践部分记录——ch2、ch3