代码改变世界

socket丢数据的一个原因

2011-08-09 15:59 by Jeff, ... 阅读, ... 评论, 收藏, 编辑
多任务环境中,某任务从socket接收数据,并传给底层处理. 程序结构如下:
while(1){
    socket receive;
    Invoke other module handle the received data;
}
次任务每收一条数据都发给底层去处理.处理完再收下一条数据. 测试结果丢数据,ethereal上看到客户端已经发送数据,但是这个任务只收到部分数据. 后来查证,每次收数据,处理数据的module会延迟几个或者几十毫秒.累积之后导致此任务接收数据丢失.