您的位置:首页 > 其它

字节流边界的确定方法

2005-11-04 13:49 218 查看
我们知道TCP是一个面向字节流的,当通过其传输数据时必须确定字节流的边界以区分不同的数据记录。
常用方法:
1.带内特殊终止符
常用的方法是使用回车符和换行符(CR+LF)来分隔每一记录,这种方法需要做转义处理,扫描整个数据寻找每个记录的位置。典型应用是ftp,smtp,http。
2.显式长度
每个记录前加长度前缀用来表示记录的长度。
举例:
#define MAX_MESG_DATA (1024 - 2*sizeof(long)) /*消息体长度*/
#define MESGHDRSIZE (sizeof(struct mesg_s) - MAX_MESG_DATA) /*消息头长度*/
typedef struct mesg_s{
long mesg_len; /*消息体的长度*/
long mesg_type; /*可以是优先级,也可以是类型*/
char mesg_data[MAX_MESG_DATA]; /*消息体*/
}mesg_t;
/*发送时:发送消息头+消息体*/
/*接受时:先接收消息头,根据消息头中的mesg_len读出消息体*/
3.每次连接一个记录
关闭与对方的连接来表示一个记录结束。即每个记录都要创建一个连接。典型应用是HTTP协议。

参考资料:
<<UNIX网络编程 卷2 进程间通信>> W.Richard Stevens
sim. 2005.11.2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: