这道题的答案在书上的第47~48页。我个人总结了一下,答案如下:
1.面向连接的套接字在进行通信之前必须建立一个连接,而面向无连接的套接字在进行通信之前不需要建立连接。代码层面,面向连接的套接字服务器端需要先打开监听(socket.listen())才能接收数据,客户端需要先连接(socket.connect())才能发送数据,而无连接的套接字无需这些操作。
2.面向连接的套接字提供序列化的、可靠的和不重复的数据交付,没有记录边界,这意味着每条消息可以拆分成多个片段,并且每一条消息片段都能确保能够到达目的地,然后将它们按顺序组合在一起,消息完整无丢失。而面向无连接的套接字在数据传输过程中无法保证顺序性、可靠性和重复性,数据有记录边界,以整体发送。
3.面向连接的套接字比面向无连接的套接字网路开销大,传输速度没有面向无连接的速度高。
4.面向连接的套接字主要协议是TCP协议,面向无连接的套接字主要协议是UDP协议。