c - 如何拒绝 C 中的套接字连接?

标签 c sockets

如果我想接受一个连接,我调用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/

相关文章:

python - python套接字服务器在发送数据后挂起

c# - 通过 Socket 传输视频帧

c - C中的复数问题

c - 如何读取CSV格式的txt文件并保存到C中的数组中

将缓冲区转换为 strtok 的 char 数组

javascript - Socket.io 和 Node.js 无法在 Heroku 上运行

javascript - 如何验证来自 socket.io 的数据包?

c++ - Windows 套接字接收标志

c - 程序从字符串中删除特殊字符和数字并仅打印英文字母

c - 数组的最大大小 - 段错误