建立一个监听的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,