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

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.dtcms.com/a/242174.html

相关文章:

  • VUE element table 列合并
  • V837s-sdk buildroot文件系统设置串口登录密码
  • 【ModelArts】ModelArts一站式AI开发平台详解(一)
  • 豆包全新视频生成模型、视觉深度思考模型发布
  • 曼昆《经济学原理》第九版 第十五章垄断
  • 线程与进程(java)
  • 汽车生产虚拟实训中的技能提升与生产优化​
  • MongoDB(八) - MongoDB GridFS介绍及使用Python操作GridFS
  • Flowable详细介绍
  • Prometheus基础使用指南
  • 【论文阅读】多任务学习起源类论文《Multi-Task Feature Learning》
  • 线程与协程
  • 实现多路视频截图预览之后上传到后台系统
  • 配置Linux的网络为静态IP地址的一些方法
  • HTML 列表、表格、表单 综合案例
  • 如何查看电脑系统的初始安装时间?
  • HTML 列表、表格、表单
  • Linux上并行打包压缩工具
  • 小天互连IM:信创体系下的安全、高效即时通讯新选择
  • 【强化学习】TD-MPC论文解读
  • 方案解读:智慧银行反欺诈大数据管控平台建设方案【附全文阅读】
  • Alpine Linux基本介绍与新手使用指南
  • 雷卯针对易百纳海鸥派海思SD3403 SS928智能视觉AI视觉国产化4K视频开发板防雷防静电方案
  • Java 枚举(Enum)的使用说明
  • tomcat的websocket协议升级。如何从报文交换变成全双工通信?session对象的注册和绑定?
  • 【WebRTC-14】webrtc是如何创建视频的软/硬编码器?
  • Linux ELF文件详解:深入理解可执行文件格式
  • 【模板编程】
  • Java八股文——JVM「类加载篇」
  • websocket实践