我需要用Java语言使用纯套接字实现客户端/服务器即时通讯。
服务器应服务大量客户端,并且我需要决定使用哪种套接字 - TCP还是UDP。
谢谢,Costa。
TCP
原因:
TCP:确保传输的数据完整无误,且按照发送的顺序到达。
UDP:没有保障消息或数据包是否能够到达。
了解更多信息:http://www.diffen.com/difference/TCP_vs_UDP
你想让你的聊天信息可能丢失吗?
编辑:我错过了“大型聊天程序”的部分。基于该聊天程序的性质,它需要是一个TCP服务器,我无法想象用户通过UDP协议发送的实际文本内容。
TCP服务器的最大限制是同时65536个连接。如果您真的需要超过这个数字,可以创建一个分发服务器,根据当前服务器负载将传入的连接发送到适当的服务器。
这取决于用户是否需要知道消息是否已经传递到服务器。UDP数据包没有内在的确认机制。如果客户端向服务器发送即时消息并且在传输过程中丢失,那么客户端和服务器都不会知道。
(简短的答案是“使用TCP”...但值得自己思考设计影响。)