专栏和Git地址

操作系统https://blog.csdn.net/yu_cblog/category_12165502.html?spm=1001.2014.3001.5482UdpSockethttps://github.com/Yufccode/BitCode/tree/main/Linux/%E4%BB%A3%E7%A0%81/0215Udp%E5%A5%97%E6%8E%A5%E5%AD%97


README

本项目通过Linux套接字编程,实现Udp通信

本项目只实现通信的核心框架代码。

可以实现的交互功能有:

  • Linux主机上本机不同进程的本地环回信息交互,效果如图1所示。

  • Linux主机上实现不同进程之间“群聊”效果,效果如图2所示

  • 不同Linux主机上的Udp通信。

  • Windows客户端与Linux服务端进行信息交互,通过对核心的代码改进,还可以实现不同Window客户端之间通过Linux服务端进行信息交互,效果如图4所示。

Linux主机本地环回

首先在客户端向服务端传送message,服务端把message原封不动地发回给客户端。如果读者希望服务端对message进行进一步变换,可以直接对代码逻辑进行改进。

图1

运行方法:

make clean; make 生成可执行

./udp_server 8080 服务端开机,设置端口号为8080

./udp_client 127.0.0.1 8080 客户端开机,127.0.0.1代表本地环回,设置端口号为8080。

Linux主机实现不同进程的“群聊”效果

图2

运行方法:

make clean; make 生成可执行

服务端SSH:

./udp_server 8080 服务端开机,设置端口号

客户端A输入SSH:

mkfifo clientA 生成管道文件,用于信息的收取

./udp_client 127.0.0.1 8080 > clientA 客户端A开机,并把收到的信息重定向到管道文件上

客户端A输出SSH:

cat < clientA 从管道文件中读取客户端A收到的结果

客户端B输入SSH:

mkfifo clientB 生成管道文件,用于信息的收取

./udp_client 127.0.0.1 8080 > clientB 客户端A开机,并把收到的信息重定向到管道文件上

客户端B输出SSH:

cat < clientB 从管道文件中读取客户端A收到的结果

不同Linux主机上的Udp通信

运行方法:

首先,如果要进行非本地测试,我们必须先开放自己主机的指定网络端口。

我自己使用的是云服务器,这里展示我自己开放主机指定网络端口的方法,如图3所示

与本地环回测试类似,只需要服务端Linux主机 make 生成服务端和客户端后,将客户端发送给另一台主机,另一台主机就可以通过运行客户端完成通信(前提是服务端已经开始运行)。

图3

Windows客户端与Linux服务端进行信息交互

图4

运行方式:

编译运行windows服务端的udp代码,连接Linux服务端即可,使用方法和Linux服务端的一样。

手撕Udp套接字|实现群聊通信|实现Windows & Linux通信交互的更多相关文章

  1. Python 3 udp 套接字

    Python 3 udp套接字 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号, ...

  2. 探索UDP套接字编程

    UDP和TCP处于同一层网络模型中,也就是运输层,基于二者之上的应用有很多,常见的基于TCP的有HTTP.Telnet等,基于UDP有DNS.NFS.SNMP等.UDP是无连接,不可靠的数据协议服务, ...

  3. 【Python网络编程】利用Python进行TCP、UDP套接字编程

    之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...

  4. 【转】 探索UDP套接字编程

    UDP和TCP处于同一层网络模型中,也就是运输层,基于二者之上的应用有很多,常见的基于TCP的有HTTP.Telnet等,基于UDP有DNS.NFS.SNMP等.UDP是无连接,不可靠的数据协议服务, ...

  5. 【nodejs】创建udp套接字的类型参数的含义

    nodejs在创建udp套接字的时候,需要传入一个类型参数.有两种类型参数可供选择:udp4和udp6.udp4对应的就是ipv4,udp6对应的是ipv6.

  6. JavaTCP和UDP套接字编程

    在我们刚开始入门Java后端的时候可能你会觉得有点复杂,包含了很多杂七杂八的知识,例如文件上传下载,监听器,JDBC,请求重定向,请求转发等等(当然也没有很多),但是我们自己真正的去开发一个小型网站( ...

  7. 计算机网络实验 UDP套接字编程

    这是个傻瓜式操作教程 西科大计算机网络实验 UDP套接字编程 我用自己的Ubuntu16.04来举例,实验室的是虚拟机,差不多 只针对第三个题目,修改服务器来通过响应客户端发送的GetTime并发送给 ...

  8. UDP套接字编程 返回系统时间

    计算机网络实验 简单UDP套接字编程 这是学校老师自己改进了一点的题目.我预习了好久才搞明白,同学来问的时候,一大堆简单问题实在是不想回答...所以,这时候我觉得博客是个好东西! 我的任务是做客户端和 ...

  9. Python之路(第三十二篇) 网络编程:udp套接字、简单文件传输

    一.UDP套接字 服务端 # udp是无链接的,先启动哪一端都不会报错 # udp没有链接,与tcp相比没有链接循环,只有通讯循环 server = socket.socket(socket.AF_I ...

  10. <unix网络编程>UDP套接字编程

    典型的UDP客户/服务器程序的函数调用如下: 1.缓冲区 发送缓冲区用虚线表示,任何UDP套接字都有发送缓冲区,不过该缓冲区仅能表示写到该套接字的UDP数据报的上限.如果应用进程写一个大于套接字缓冲区 ...

随机推荐

  1. <vue 基础知识 6、条件判断标签v-if>

    代码结构 一.     01-v-if用法 1.效果 根据分数的不同展现不同的汉字 2.代码 01-v-if用法.html <!DOCTYPE html> <html lang=&q ...

  2. element-ui 实现行合并-亲测有效!

    目标样式: 首先先来看下我们拿到的返回数据: scheduleList: [ { date: '第一天', journey: '报道', lecturer: '', }, { date: '第二天', ...

  3. element的table组件在flex布局下宽度不能自适应

    问题描述 用了flex布局,左侧固定宽度,右侧flex:1:(表格在右侧区域),且中间容器都有width:100%,当将屏幕变大,表格随着变宽,当屏幕变小时,表格不会随着屏幕变小,宽度无法自适应. 解 ...

  4. 扒一扒爱奇艺影视剧新功能——AI识别、GIF动画生成、画面截图涂鸦

    AI 识别 点击画面中的  右侧出现 查看详情 GIF动画生成 点击画面中的 生成GIF动画 画面截图涂鸦 截图 涂鸦

  5. vim处理冲突文件

    一.文件冲突前: 二.文件冲突后(默认为): 此时编辑文档,将before改为after但是异常退出了,此时编辑文档提示冲突: 回车进入展示编辑前的文档: ll-a可查看到隐藏文件的信息: 三.文件冲 ...

  6. 深入理解Kafka核心设计及原理(一):初识Kafka

    转载请注明出处: 1.1 kafka简介 Kafka 起初是由 Linkedin 公司采用 Scala 语言开发的一个多分区.多副本且基于 ZooKeeper协调的分布式消息系统,现己被捐献给 Apa ...

  7. linux 命令使用总结:vim,nohup,find,df,du,sudo,netstat,ll,curl,lastlog

    1.Vim命令使用 vim 为编辑文本命令: vim 文件  回车即可查看文件 按 字母 i 键,即可进入 insert 编辑模式. 按 ESC 键即可退出编辑模式 输入冒号:wq 即可保存修改 输入 ...

  8. Cortex M3 - NVIC(中断向量控制器)

    NVIC-概述 nested vector interrupt control - 内嵌向量中断控制器 传统ARM中断控制在Core的外部,软件接收到中断之后,需要查中断的编号,然后启动相应的中断处理 ...

  9. 使用pip安装pycharm插件时,要使用管理员权限打开cmd安装

    1.问题 安装到一半报错 报错1 报错2 2.解决 解决1 原文:https://blog.csdn.net/weixin_44899752/article/details/128372969 下面是 ...

  10. 让vs支持wsl调试

    WSL安装 wsl --install -d Ubuntu 等一会提示输入用户名,不用管它,直接关闭,下次打开wsl,会以无密码的root用户打开 wsl卸载 wsl --unregister Ubu ...