实现一个简单的网络通信下(udp)

时间过去好久了,先回忆一下上一篇博客的代码!!

实现一个简单的网络通信下(udp)_第1张图片

实现一个简单的网络通信下(udp)_第2张图片

实现一个简单的网络通信下(udp)_第3张图片

目前来看,我们客户端发一条消息,我服务器收到这一条消息之后呢,服务器也知道了是谁给我发来的消息,紧接这就把这条消息放进buffer当中,在把我们的 用户IP和端口号,提取出来当作我们 的key插入我们的用户管理当中,在发回给客户端

实现一个简单的网络通信下(udp)_第4张图片

那么我们接下来在干一件事,在加一个客户端

实现一个简单的网络通信下(udp)_第5张图片

但是这时候127.0.0.1 - 42909这个客户端并没有“你好l”这一条消息,这个客户端的IO 被阻塞了

实现一个简单的网络通信下(udp)_第6张图片

而我们现在想要的效果是,我服务端发送消息,在服务端用户管理当中的用户,都能收到这一条消息,并且哪怕我的这个用户不向服务端发送消息,也依然能收到来自服务端的消息

实现一个简单的网络通信下(udp)_第7张图片

那么我们就需要把我们的客户端改一下,引入我们的多线程,让我们的一个线程发消息,一个线程收消息

实现一个简单的网络通信下(udp)_第8张图片

实现一个简单的网络通信下(udp)_第9张图片

实现一个简单的网络通信下(udp)_第10张图片

这样,我们的读写两个线程的回调方法就写好了

发现此时我们的多线程读写,用的sock都是同一个,sock代表的就是文件(我们是没办法对同一个文件同时又是读又是写的),但是在这边是没有问题的,我们的udp是全双工的 --> 可以同时进行收和发,而不受干扰

实现一个简单的网络通信下(udp)_第11张图片

但是此时,一个客户端把要发的和要收的消息,混在一起了,我们可以分开来

实现一个简单的网络通信下(udp)_第12张图片

实现一个简单的网络通信下(udp)_第13张图片

实现一个简单的网络通信下(udp)_第14张图片

实现一个简单的网络通信下(udp)_第15张图片

实现一个简单的网络通信下(udp)_第16张图片

你可能感兴趣的:(udp,网络协议,网络)