linux下还有数据没有recv完,能send数据吗

如题所述

  服务器端socket,用recv接收数据,先接收前8个字节,发现前8个字节内容就错了,于是放弃继续接收剩下的数据,返回告知内容错误的报文,调用send函数,结果发现客户端recv时出错。

为什么呢?

socket接收数据时,需要等待发送缓冲区的数据全部发送完毕,才能recv,没说发送数据也必须要等到接收完毕才能发送啊。

到底是怎么回事呢?

谢谢。

代码:
server:

sockfd = socket();
bind();
linsten();
clisock = accept();

read(clisock, buf, 8);//客户端发送的远不止8字节数据
if (atoi(buf) <= 0)
write(clisock, "error", 5);

write成功。但客户端接收时产生错误。

如果发送前必须接收完毕,能不能直接清空呢
温馨提示:答案为网友推荐,仅供参考
相似回答