socket编程里recv函数接收不了0x00,但是同学的就可以,是为什么啊??
我和同学一个写服务器,一个写客户端,可是他的客户端的recv函数可以接收我发的0x00,而我就接受不到他发的。都是用charbuffer={0x00,0x01},直接用s...
我和同学一个写服务器,一个写客户端,可是他的客户端的recv函数可以接收我发的0x00,而我就接受不到他发的。都是用char buffer = {0x00,0x01},直接用send发送的,但是我就是读不到数据,这是为什么啊??
展开
1个回答
展开全部
int send( SOCKET s, const char FAR *buf, int len, int flags );
该函数的第一个参数指定发送端套接字描述符;
第二个参数指明一个存放应用程序要发送数据的缓冲区;
第三个参数指明实际要发送的数据的字节数;
第四个参数一般置0。
不知道您的send函数调用怎么写的。
试试
char buf[2] = {0x00, 0x01};
send(s, buf, sizeof(buf), 0);
该函数的第一个参数指定发送端套接字描述符;
第二个参数指明一个存放应用程序要发送数据的缓冲区;
第三个参数指明实际要发送的数据的字节数;
第四个参数一般置0。
不知道您的send函数调用怎么写的。
试试
char buf[2] = {0x00, 0x01};
send(s, buf, sizeof(buf), 0);
更多追问追答
追问
同学是这样发的char buf[64]; buf[0] = 0x00; buf[1] = 0x01; send(s, buf, 2, 0);跟你的是一样的吧,就是读不到数据,0x00之后的都读不到了,是不是因为0x00代表结束符啊,但是我同学的客户端却确确实实读到了我发的0x00,太郁闷了
追答
你的recv怎么写的?
ret = recv(s, buf, 10, 0); 这里的ret是实际读取的字节数。按照上面的应该是2。
请检查该返回值是否正确。
如果你直接recv然后打印buf就会看不到,因为第一个是\0(0x00)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询