Linux下的sock_stream和sock_dgram

来源:互联网 发布:电脑能写小说的软件 编辑:程序博客网 时间:2024/05/19 17:06

SOCK_STREAM是有保障的(即能保证数据正确传送到对方),是面向连接的,多用于资料(如文件)传送;

SOCK_DGRAM是无保障的面向消息的socket,主要用于在网络上发布广播消息;

可以说,SOCK_STREAM是基于TCP的,数据传送比较有保障;

而SOCK_DGRAM是基于UDP的,专门用于局域网,基于广播的。

SOCK_STREAM是数据流,一般为TCP/IP协议的编程;

SOCK_DGRAM是数据包,一般为UDP协议的网络编程;

UDP特性

UDP协议适用端口分别运行在同一台设备上的多个应用程序。

具有的特点为:

(1)分组在发送后,可能无序地到达接收端;

(2)分组可能丢失。若发生丢失,则不会采取任何补救措施,而且接收端不必知道有分组丢失;

(3)数据报分组有尺寸大小的限制。若超出限制,在某些路由器和节点上就无法传送;

(4)分组在不建立连接的情况下被发送到远程进程。

TCP特性

(1)不保留任何消息的边界;

举例说明:本地主机通过两次独立的write(2)调用向远程主机发送数据,第一次本地进程写入25字节的数据,并通过套接口发送到远程进程,第二次再写入30字节的数据发往远程进程,总共55字节的数据,而远程进程从套接口接收数据时,将消息作为一个完整的单元来接收,或是通过若干次独立的读操作来将数据取走,即接受端并不知道这55字节的数据是分25字节和30字节两次来发送的;

(2)有序性 

可以保证接受的数据字节与发送是顺序完全一致(意味着通信之前必须建立一个连接);

(3)无错性

可以保证接受的数据在接收端被无错的接受。如果有错误发生,在尝试完所有的错误恢复措施后仍无法消除错误,流套接口就会报告错误。所进行的错误恢复措施尝试是完全自动的,不需编程者的指导。

0 0
原创粉丝点击