0
我有以下代码,并且在发送了几百个字节后写入套接字写入套接字。我已经使用“rb”标志读取fread字节。TCP套接字在循环中途停止写入
char filebuff[size_aux];
i=0;
int negative=0;
int positive=0;
int zero=0;
while(i<size_aux) //size_aux is 79067
{
bytesSent = write(clnt_fd, &filebuff[i], 1);
if(bytesSent>0) positive++;
if(bytesSent<0) negative++;
if(bytesSent==0) zero++;
i++;
}
它印什么是这样的:
Positive: 868
Negative: 78199
Zero: 0
我已经检查其发送的连续868直,然后停止发送,从而为-1写转值。发送的字节数是随机的,有时像868个其他时间(如600),但与文件的实际大小相比较小。 在此之前,我不得不插入以下代码:
signal (SIGPIPE, SIG_IGN);
因为在while循环的中间,将退出我的程序到终端。
套接字是否非阻塞? – usr 2014-10-06 17:12:32
阅读写文档。看看错误代码。现在修复您的代码以详细查看这些错误代码,或者至少打印出您的代码正在获取的错误。 – 2014-10-06 17:12:49
errno给我的是0,所以我不能做太多。我如何知道套接字是否是非阻塞的,我无法访问服务器代码。 – Elsendion 2014-10-06 17:16:59