五个简单TCP示例:echo, discard, chargen, daytime, time
echo:回显服务,把收到的数据发回客户端。
discard:丢弃所有收到的数据。
chargen:服务端accept连接之后,不停地发送测试数据。
daytime:服务端accept连接之后,以字符串形式发送当前时间,然后主动断开连接。
time:服务端accept连接之后,以二进制形式发送当前事件,然后主动断开连接;需要一个客户程序把收到的时间转换为字符串。
discard
最简单的长连接TCP应用层协议,只需要关注“三个半事件”中的“消息/数据到达”事件,事件处理函数如下:
void DiscardServer::onMessage(const TcpConnectionPtr& conn, Buffer* buf, Timestamp time)
{
string mas(buf->retrieveAllAsString());
LOG_INFO << conn->name() << " discards " << msg.size() << " bytes received at " << time.toString();
}
daytime
daytime是短连接协议,在发送完当前事件后,服务端主动断开连接。只需要关注“三个半事件”中的“连接已建立”事件,事件处理函数如下: