如果我想接受一个连接,我调用accept
,但是我怎么能拒绝一个连接呢?
在工作套接字回显客户端中,我有这个 if 语句。在回显服务器中,如何使回显客户端到达此 printf
语句?
...
if (connect(sock, (struct sockaddr *) &server, sizeof(server)) < 0) {
printf("Connecting failed\n");
return 1;
}
...
最佳答案
要获得您想要的行为(一次只接受一个连接,其他尝试的客户端应该会失败),有两种选择。
您可以在接受连接后关闭监听套接字。在接受的连接关闭后重新创建您的监听套接字。
如果已有连接在进行中,您可以关闭新建立的连接。如果您希望客户端看到 TCP 重置,如果您启用超时为 0 的 linger 选项,大多数 TCP 堆栈将触发一个。
struct linger lo = { 1, 0 };
setsockopt(s, SOL_SOCKET, SO_LINGER, &lo, sizeof(lo));
关闭(s);
关于c - 如何拒绝 C 中的套接字连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16590847/