当前位置: 技术问答>linux和unix
求助!!!linux tcp发送 xp tcp接收 出现的问题
来源: 互联网 发布时间:2016-11-26
本文导语: 小弟近日 在linux 用一个开发板 通过 usb无线网卡 发送 一帧的图片 (190*256),send 返回 48640;在xp端接收的时候发现recv 返回13032个字节,recvbuf剩下的数据 为0(我刚开始把recvbuf置0), 我在xp端recv设置的numb...
小弟近日 在linux 用一个开发板 通过 usb无线网卡 发送 一帧的图片 (190*256),send 返回 48640;在xp端接收的时候发现recv 返回13032个字节,recvbuf剩下的数据 为0(我刚开始把recvbuf置0), 我在xp端recv设置的numbytes= recv(sockconn,recvbuf,sizeof(recvbuf), 0) recvbuf是190*256大小的一个数组;我现在判断是不是 send没有发送完全。。。求大家指点下。。。
|
send 已经返回需要发送的字节了,那就是发送完成了,到达TCP的缓冲区了,剩下的活由TCP协议自身来干了
循环发送的参考代码
循环发送的参考代码
ssize_t /* Write "n" bytes to a descriptor */
writen(int fd, const void *ptr, size_t n)
{
size_t nleft;
ssize_t nwritten;
nleft = n;
while (nleft > 0) {
if ((nwritten = write(fd, ptr, nleft)) = 0 */
}
|
再调用一次recv 看看
|
由于网络通信中缓冲的影响,不能期望单次recv完成所有数据的接收
也不能期望单次send完成所有数据的发送
需要循环处理
也不能期望单次send完成所有数据的发送
需要循环处理