|
|

楼主 |
发表于 2005-6-23 10:29:45
|
显示全部楼层
|
看来也不可尽信专家,其实两者都是阻塞的,错误在于思路的错误,在我的实现里,发送方每次读取文件2324个字节,发送的时候加16字节的头然后发送,接收方这样:read(sockfd,buffer,2340);误以为接收方在接收的时候每次也能读取到2340个字节,然后通过头部去判定结束。其实接收方每次接收的数据包不一定的,只是最大字节数为2340而已,结果就不能正确读取头部了。现在存在另外一个问题,接收方接收到的数据小于发送方发送的数据,比如我发送一个30M左右的文件,会少几十、几百甚至上千个字节不等,read就返回0了,并且有一次返回-1,错误码为22。我read(sockfd,buffer,2340);哪里非法参数了? |
|