本项目是卡耐基梅隆大学的课程分布式系统(CMU440)课程项目。
课程主页:http://www.cs.cmu.edu/~dga/15-440/S14/syllabus.html
程序代码:https://github.com/ZhouJiahui/CMU440/tree/master/P0-Multi_client_echo_server
这是一个go语言和网络编程的练手项目,它的目标是实现一个多客户的回显服务器。
该回显服务器必须满足如下特征:
1,服务端必须使用goroutines和channels来并发地对客户端管理和交互。多个客户端应该能够同步地连接和断开服务端。
2,服务端假设所有信息都是基于行的,以“\n"符号分割。当服务端从客户端读到新的一行终结信息时,它必须通过写一条额外的信息给所有客户端,包括发送信息的客户端。
3,服务端必须能够应对读取缓慢的客户端。为了更好的理解这个意思,考虑这样一种情况:一个客户端有一段时间不能read,如果在这段时间服务器端一直给这个客户端的TCP连接发送信息,最终TCP连接将溢出缓冲区并且随后调用write将会使服务端堵塞。为了处理这种情况,你的服务端在之后一段时间应该记录至多100条信息发送给这样的客户端。发送给已经溢出100容量缓冲的慢读客户端的信息可以被直接丢弃。如果慢读客户端之