【发布时间】:2012-10-05 07:04:01
【问题描述】:
我在 Linux 中编写了两对代码(server.c 和 client.c)。一个用于 UNIX 域 AF_UNIX 另一个用于 INTERNET 域 AF_INET。两者都工作正常!
listen() 在both servers 中被调用 因为积压队列长度 = 3
listen(sockfd, 3);
在 UNIX 域 (AF_UNIX) 中: 当一个客户端与服务器连接时,如果我尝试将更多客户端连接到服务器。三个在队列中,第四个的请求被拒绝。 (如我所愿 - 等待队列中的 3 个)。
在 INTERNET 域 (AF_INET) 中: 超过三个的请求保留在待处理队列中。
为什么即使积压队列长度为 3,来自第四个客户端的请求也没有被拒绝?为什么listen()(和其他)协议的行为依赖于协议?
【问题讨论】:
-
我不太明白你的意图......你为什么会因为队列已满而拒绝客户?
-
@KarolyHorvath:我的意思是,如果我给出等待队列长度,它应该被拒绝。我想知道这件事。
-
我认为任何不符合我们预期的 API 参数都应该困扰我们,因为这意味着我们不理解它。
标签: c linux sockets network-protocols listen