2013年8月1日

UNIX网络编程——解决TCP网络传输“粘包”问题

摘要: 当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协议:TCP和UDP。其中TCP(transport control protocol,传输控制协议)是面向连接的,提供高可靠性服务。UDP(user... 阅读全文

posted @ 2013-08-01 19:06 胡永光 阅读(155) 评论(0) 推荐(0) 编辑

UNIX网络编程——Socket粘包问题

摘要: 一、两个简单概念长连接与短连接:1、长连接 Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。2、短连接 Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点 通讯,比如多个C... 阅读全文

posted @ 2013-08-01 18:28 胡永光 阅读(232) 评论(0) 推荐(0) 编辑

UNIX网络编程——Socket/TCP粘包、多包和少包, 断包

摘要: 为什么TCP 会粘包 前几天,调试mina的TCP通信, 第一个协议包解析正常,第二个数据包不完整。为什么会这样吗,我们用mina这样通信框架,还会出现这种问题? TCP(transport control protocol,传输控制协议)是面向连接的,面向流的,提供高可... 阅读全文

posted @ 2013-08-01 17:53 胡永光 阅读(363) 评论(0) 推荐(0) 编辑

UNIX网络编程——利用ARP和ICMP协议解释ping命令

摘要: 一、MTU 以太网和IEEE 802.3对数据帧的长度都有限制,其最大值分别是1500和1492字节,将这个限制称作最大传输单元(MTU,Maximum Transmission Unit) 如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就要进行... 阅读全文

posted @ 2013-08-01 15:38 胡永光 阅读(146) 评论(0) 推荐(0) 编辑

UNIX网络编程——利用recv和readn函数实现readline函数

摘要: 在前面的文章中,我们为了避免粘包问题,实现了一个readn函数读取固定字节的数据。如果应用层协议的各字段长度固定,用readn来读是非常方便的。例如设计一种客户端上传文件的协议,规定前12字节表示文件名,超过12字节的文件名截断,不足12字节的文件名用'\0'补齐,从第13字节开始是... 阅读全文

posted @ 2013-08-01 15:20 胡永光 阅读(229) 评论(0) 推荐(0) 编辑

UNIX网络编程——tcp流协议产生的粘包问题和解决方案

摘要: 我们在前面曾经说过,发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体,或说是一个流(stream),在底层通讯中这些数据可能被拆成很多数据包来发送,但是... 阅读全文

posted @ 2013-08-01 14:37 胡永光 阅读(149) 评论(0) 推荐(0) 编辑

导航