再谈对非阻塞的理解

一般来说,现在大家 epoll 都是搭配着非阻塞 IO 一起用的,要问为什么?大家都这么用的啊,而且异步嘛,非阻塞嘛,很自然嘛 但是,非阻塞 IO 具体是怎么对 send 和 recv 起作用的。一般理解,我们之所以要用非阻塞,是为了避免这种情况: 客户端跟我们 tcp 三次握手完了,我们 listen fd 上得到一个 IN 事件了,然后 acc……

阅读全文

Linux TCP UDP 混合

基本的思路是这样的:在服务器端,有两个机器,一个对外开启 TCP 监听,然后把监听到的请求内容送到后面的另外一台,或者多台轮询机器上,内网之间使用 UDP,然后等待业务逻辑机器处理完成,这个地方可以做成异步的,然后再返回到用户。 即是这样: client server_front server_back 下面来看代码,首先是 server_fro……

阅读全文

Linux UDP 收发实例

首先我们需要一个 struct.h #ifndef STRUCT_H #define STRUCT_H typedef struct _UDP_MSG { int add1; int add2; int sum; char str1[128]; char str2[128]; char cat[256]; } UDP_MSG; #endif /* STRUCT_H */ 然后是服务端的 #include <sys/types.h> #include <……

阅读全文