如何获得通过socket传过来的字节流的长度
来源:互联网 发布:知柏地黄丸 肾炎 编辑:程序博客网 时间:2024/05/18 01:46
建立一个监听的socket,有客户端向该socket发送数据,每次的发送均不等长。
我如何在使用recv()函数前获得接受数据的长度呢?
我已找了论坛,可没有答案。
谢谢各位
UDP的话,每次发过来多长的包接收到的包就是多长,当然前提是接收成功。
TCP的话,需要自己定义格式了,如每次先发过来信息长度,然后发送信息实体。接收的时候先接收长度信息,接收够这个长度就组成一个实体信息。
TCP还有两种方法,1 是定义信息边界,如一个信息的使用#2表示开始,使用#3表示结束,接收的时候自己分割。2 采用定长信息。
为了获得客户端发过来的包的长度,已经包类型.客户端需要定义包的结构,包括包头,包的数据等
例如,可以这样定义
struct head//包头, 定义长度,类型等
{
int len;
int type;
}
struct Pack1 //具体的包
{
head ahead;
//the pack1 data;
}
客户端发送pack1后, 服务端接收的时候,就可以先接收head大小的字节数,并转化成
head结构, 就可以知道此包的大小,类型,就可以接收包后面的数据.
自己没法确定对方传来的包的长度
int recv (
SOCKET s,
char FAR* buf,
int len, //自己指定的可能收到的最大长度,但实际上不一定能收到这么多
int flags
);
返回值是实际收到的长度,但因为TCP会发生粘包,所以信息的边界需要自己指定。
就是自己确定将要传过来的包的长度!
- 如何获得通过socket传过来的字节流的长度
- 获得字符串对应的字节长度
- 如何获得数组的长度
- socket输入流中读取一个固定长度的字节
- 如何获取socket中ReceiveFrom接收的数据的字节长度?
- 读取socket传过来的信息
- c/c++如何获得数组的长度
- 如何获得一个数组的长度
- JAVA SOCKET服务端接收C客户端字节长度的问题
- Socket.Receive 无法预知字节长度的数据接收
- 获得qstring字符串的长度(字节长度和所占的像素宽度)
- 获得一串字符串数据长度的高位字节和 低位字节的方法
- 通过指针遍历获得字符数组的长度
- 计算字节的长度
- 用js获得 地址栏传过来的值
- Struts2标签获得action中传过来的值
- js方法获得地址栏中传过来的参数值
- 如何通过手机号获得对应的省份
- 字符栈
- chap12
- tomat 不用重启,自动更新的设置。
- 使用Visual Basic 6.0开发程序的一些方法技巧收集之一:注册表操作
- ascii码转为对应的十六进制数函数
- 如何获得通过socket传过来的字节流的长度
- 中缀表达式转为后缀表达式
- 汇编代码创建从软盘启动的boot loader
- 由一道题来看java初始化顺序
- struts2.1.8.1中datetimepicker标签的使用方法
- 在不知道流的长度下,怎样判断从socket中读取的字节流结束?
- 09校内网、人人网、千橡公司笔试题
- 一些特效基础——视频讲解
- XMLHttp连续调用SEND需要注意的问题