TCP网络编程本质
TCP网络编程编程本质是处理三个半事件。
1.连接建立:服务器accept(被动)接收连接,客户端connect(主动)发起连接。
2.连接断开:主动断开(close、shutdown),被动断开(read返回0)
3.消息到达:文件描述符可读
4.消息发送完毕:这算半个事件。对于低流量的服务,可以不关心这个事件。这里的发送完毕是数据写入操作系统缓冲区,将由TCP协议栈法则数据的发送与重传,不代表对方已经接数据。高流量服务可能导致内核缓冲区满了,数据还会追加到应用层缓冲区。
事件处理框架:
来看主要的两个类图:
用connectCallback一个方法包含了连接建立和连接断开。messageCallback处理消息达到事件。writeCompleteCallback处理消息发送完毕事件。
使用举例,EchoServer: