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)无错性
可以保证接受的数据在接收端被无错的接受。如果有错误发生,在尝试完所有的错误恢复措施后仍无法消除错误,流套接口就会报告错误。所进行的错误恢复措施尝试是完全自动的,不需编程者的指导。
- Linux下的sock_stream和sock_dgram
- SOCK_STREAM与SOCK_DGRAM的区别
- sock_stream与sock_dgram的区别
- SOCK_STREAM和SOCK_DGRAM两种类型的区别
- SOCK_STREAM和SOCK_DGRAM两种类型的区别
- SOCK_STREAM和SOCK_DGRAM两种数据类型
- SOCK_RAW 与 SOCK_STREAM 、SOCK_DGRAM 的区别
- SOCK_STREAM,SOCK_DGRAM,SOCK_SEQPACKET,SOCK_RAW.
- 关于Socket类型中SOCK_STREAM和SOCK_DGRAM区别
- SOCK_STREAM和SOCK_DGRAM为什么会有这两种数据类型
- SOCK_STREAM与SOCK_DGRAM套接口类型
- SOCK_RAW 与 SOCK_STREAM 、SOCK_DGRAM 区别
- SOCK_STREAM与SOCK_DGRAM套接口类型
- SOCK_STREAM与SOCK_DGRAM套接口类型
- 流式套接字(SOCK_STREAM),数据报套接字 (SOCK_DGRAM) 的比较
- SOCK_DGRAM和区别
- 套接字有三种类型:流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM)及原始套接字
- 使用PF_PACKET和SOCK_DGRAM探测网络包
- 图解Android - Zygote, System Server 启动分析
- 多线程开发
- Servlet知识点<一>
- 使用 robolectric 做单元测试
- iOS开发Runtime那些事
- Linux下的sock_stream和sock_dgram
- HDU 4995Revenge of kNN(暴力)
- 罗马数字转换为十进制数字
- Node:Q与node http模块搭配
- Servlet知识点<二>
- 判断一个数是否是2^N次方
- MATLAB 解不等式组
- 读《点石成金》
- 线程池