在服务器和主机建立socket连接后,客户端向服务器监听程序写数据(比如1个char),由
于客户端某种原因,导致了相邻的两次操作都为write,而且间隔时间较短,结果服务器只
接受到了前一个,第二个丢失了(应该两次write操作是在服务器处理过程中,结果只接受
到了一个)。服务器用select调用。有没有可以在连续write的时候强制刷新输出缓冲区的
方法?目前可以用sleep或者加一个大的空循环解决,不过对效率会有影响。谢谢!
于客户端某种原因,导致了相邻的两次操作都为write,而且间隔时间较短,结果服务器只
接受到了前一个,第二个丢失了(应该两次write操作是在服务器处理过程中,结果只接受
到了一个)。服务器用select调用。有没有可以在连续write的时候强制刷新输出缓冲区的
方法?目前可以用sleep或者加一个大的空循环解决,不过对效率会有影响。谢谢!
客户端:
assert(willSendNum>0);
int sendNum=send(...,willSendNum);
if( sendNum==-1 ){
return;
}
int leftNum=willSendNum-sendNum;
while( leftNum>0 ){
sendNum=send(...,leftNum);
leftNum=leftNum-sendNum;
}