SOCK_STREAM与SOCK_DGRAM套接口类型
SOCK_STREAM套接口(流套接口)的性质
1、不保留任何消息的边界
举一个例子:本地主机通过两次独立的write(2)调用向远程主机发送数据,第一次本地进程写入25字节的数据,并通过套接口发送到远程进程,第二次再写入30字节的数据发往远程进程,总共55字节的数据,而远程进程从套接口接收数据时,将消息作为一个完整的单元来接收,或是通过若干次独立的读操作来将数据取走,即接受端并不知道这55字节的数据是分25字节和30字节两次来发送的。
2、有序性 可以保证接受的数据字节与发送是顺序完全一致(意味着通信之前必须建立一个连接)
3、无错性 可以保证接受的数据在接收端被无错的接受。如果有错误发生,在尝试完所有的错误恢复措施后仍无法消除错误,流套接口就会报告错误。所进行的错误恢复措施尝试是完全自动的,不需编程者的指导。
SOCK_DGRAM套接口
特征:
1、分组在发送后,可能无序地到达接收端
2、分组可能丢失。如果发生丢失,不会采取任何补救的措施,而且接受端也不必知道有分租丢失。
3、数据报分组有尺寸大小的限制,如果超出限制,在某些路由器和节点上就无法传送。
4、分组是在不建立连接的情况下被发送到远程进程的。