我有一个使用select通过TCP套接字从客户端获取数据的TCP服务器。
服务器消耗数据的速度很慢,而客户端则要快得多。我的客户每次发送8个字节的数据
-打开一个新的连接
写入数据
-断开
因此(服务器套接字必须接受许多连接),我将listen的backlock值增加到500。

尽管有此设置,但在某些时候我可以看到
-我的客户阻止了一个称为pthread__connect_nocancel函数,这种情况发生了很多次。
-过一会儿,我的服务器开始接收到乱序的数据。困惑的第一个数据是客户端阻止的数据(其次是other)。

我认为增加积压可能会解决此问题,但是这个问题并非如此。

你能帮助我吗?我在Linux 2.6.32中

干杯

美国空军

最佳答案

listen(2) 的backlog参数通常限制为OS网络堆栈内的某个值。在Linux上,默认值为128。

但是,真正的问题是,就像@EJP所说的那样,您完全误用了TCP。

10-08 06:33
查看更多