linux下关于发送的问题,答对的100分马上给,刚给了100分的
linux的发送代码:
ntimes = 0;
while ( nleft > 0) {
if ( (nwritten = write(fd, ptr, nleft)) <= 0) {
printf("write sock for head_len error: errno=%d\n",errno);
if ( errno == EINTR) {
nwritten = 0; /* and call write() again */
ntimes++;
if ( ntimes > 10 ) return 0;
}
else{
return 0; /* error */
}
}
nleft -= nwritten;
ptr += nwritten;
}
我的问题是:
如果发送缓冲区满,而且接收端一段时间不进行接收,比如接收端网速慢或者断开一会儿,那这样做是不是马上就把接收端给否定了?如果是在网络游戏中的话,接收端就会被马上cut掉了。有没有什么办法多给接受端一点机会,呵呵。让他有个1,2分钟的时间,超时的话,才把它cut掉。