我有一个使用select
通过TCP套接字从客户端获取数据的TCP服务器。
服务器消耗数据的速度很慢,而客户端则要快得多。我的客户每次发送8个字节的数据
-打开一个新的连接
写入数据
-断开
因此(服务器套接字必须接受许多连接),我将listen
的backlock值增加到500。
尽管有此设置,但在某些时候我可以看到
-我的客户阻止了一个称为pthread
的__connect_nocancel
函数,这种情况发生了很多次。
-过一会儿,我的服务器开始接收到乱序的数据。困惑的第一个数据是客户端阻止的数据(其次是other)。
我认为增加积压可能会解决此问题,但是这个问题并非如此。
你能帮助我吗?我在Linux 2.6.32中
干杯
美国空军
最佳答案
listen(2)
的backlog参数通常限制为OS网络堆栈内的某个值。在Linux上,默认值为128。
但是,真正的问题是,就像@EJP所说的那样,您完全误用了TCP。