手撕Udp套接字|实现群聊通信|实现Windows & Linux通信交互

专栏和Git地址
操作系统UdpSocket
https://blog.csdn.net/yu_cblog/category_12165502.html?spm=1001.2014.3001.5482
https://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通信交互的更多相关文章
- Python 3 udp 套接字
Python 3 udp套接字 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号, ...
- 探索UDP套接字编程
UDP和TCP处于同一层网络模型中,也就是运输层,基于二者之上的应用有很多,常见的基于TCP的有HTTP.Telnet等,基于UDP有DNS.NFS.SNMP等.UDP是无连接,不可靠的数据协议服务, ...
- 【Python网络编程】利用Python进行TCP、UDP套接字编程
之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...
- 【转】 探索UDP套接字编程
UDP和TCP处于同一层网络模型中,也就是运输层,基于二者之上的应用有很多,常见的基于TCP的有HTTP.Telnet等,基于UDP有DNS.NFS.SNMP等.UDP是无连接,不可靠的数据协议服务, ...
- 【nodejs】创建udp套接字的类型参数的含义
nodejs在创建udp套接字的时候,需要传入一个类型参数.有两种类型参数可供选择:udp4和udp6.udp4对应的就是ipv4,udp6对应的是ipv6.
- JavaTCP和UDP套接字编程
在我们刚开始入门Java后端的时候可能你会觉得有点复杂,包含了很多杂七杂八的知识,例如文件上传下载,监听器,JDBC,请求重定向,请求转发等等(当然也没有很多),但是我们自己真正的去开发一个小型网站( ...
- 计算机网络实验 UDP套接字编程
这是个傻瓜式操作教程 西科大计算机网络实验 UDP套接字编程 我用自己的Ubuntu16.04来举例,实验室的是虚拟机,差不多 只针对第三个题目,修改服务器来通过响应客户端发送的GetTime并发送给 ...
- UDP套接字编程 返回系统时间
计算机网络实验 简单UDP套接字编程 这是学校老师自己改进了一点的题目.我预习了好久才搞明白,同学来问的时候,一大堆简单问题实在是不想回答...所以,这时候我觉得博客是个好东西! 我的任务是做客户端和 ...
- Python之路(第三十二篇) 网络编程:udp套接字、简单文件传输
一.UDP套接字 服务端 # udp是无链接的,先启动哪一端都不会报错 # udp没有链接,与tcp相比没有链接循环,只有通讯循环 server = socket.socket(socket.AF_I ...
- <unix网络编程>UDP套接字编程
典型的UDP客户/服务器程序的函数调用如下: 1.缓冲区 发送缓冲区用虚线表示,任何UDP套接字都有发送缓冲区,不过该缓冲区仅能表示写到该套接字的UDP数据报的上限.如果应用进程写一个大于套接字缓冲区 ...
随机推荐
- Codeforces Round #700 (Div. 2) A ~ D1个人题解
Codeforces Round #700 (Div. 2) 比赛链接: Click Here 1480A. Yet Another String Game 因为Alice是要追求小,Bob追求大值, ...
- 2.5D 组态案例合集 | 智慧园区、数据中心、SMT 生产线、汽车制造
在阅读文章之前,大家可以思考下 2.5D 设计属于哪种界定? 2.5D 是通过二维的元素来呈现出三维的效果.其实在国外并没有 2.5D 这样的称呼,标准说法是 Isometric 风格,翻译过来就是等 ...
- 【教程】步兵 cocos2dx 加密和混淆
文章目录 摘要 引言 正文代码加密具体步骤代码加密具体步骤测试和配置阶段IPA 重签名操作步骤 总结 参考资料 摘要 本篇博客介绍了针对 iOS 应用中的 Lua 代码进行加密和混淆的相关技术.通过对 ...
- 基于java+springboot的图书借阅网站-在线图书借阅管理系统
该系统是基于java+springboot开发的图书借阅管理系统.是给师弟开发的课程作业.大家学习过程中,遇到问题可以github咨询作者. 系统演示地址 前台 http://book.gitapp. ...
- 在Linux上安装和使用免费版本的PyMol
技术背景 PyMol是一个类似于VMD的分子可视化工具,也是在PyQt的基础上开发的.但是由于其商业化运营,软件分为了教育版.开源版和商业版三个版本.其中教育版会有水印,商业版要收费,但是官方不提供开 ...
- 第二届福州大学至诚学院网络安全大赛G0DCTF Misc WP
MISC baby_misc 1.题目信息 key文件夹: 还有一张图片 2.解题方法 观察key文件夹里的每个文件信息,发现并无什么有用的,甚至有的为空... 看到文件名称的数字而且还给了图片,可以 ...
- C++17 解构绑定
在python中,加入我们有一个函数返回了两个数值,如: def getData(x, y): return x,y 那么我们在使用这个函数时只需要使用两个新变量去接收函数返回值就可以: a,b = ...
- android应用申请加入电池优化白名单
首先,在 AndroidManifest.xml 文件中配置一下权限: 1 <uses-permission android:name="android.permission.REQU ...
- ECharts——快速入门
ECharts快速入门 引入 ECharts <!DOCTYPE html> <html> <head> <meta charset="utf-8& ...
- Linux-磁盘-di-目录查询-du-tree