gpt4 book ai didi

c - 在C编程中处理客户端-服务器套接字中的ctrl+c

转载 作者:行者123 更新时间:2023-11-30 18:27:07 25 4
gpt4 key购买 nike

我用C编程语言编写了一个telnet服务器。客户端使用以下命令连接到服务器:

telnet *IP_Address*

我希望当客户端在其终端中按 ctrl+c 时,服务器关闭客户端连接,但服务器套接字保持打开状态。为此,将此命令放在主函数的第一行:

signal(SIGINT, CtrlC_Handler);

这是 CtrlC_Handler 函数:

void CtrlC_Handler(int sig) {

close(_c->_client_socket);
}

问题是当客户端在其终端连接中按 ctrl-c 时,连接不会关闭,并且命令行终端不会响应客户端:

enter image description here

但是当服务器套接字关闭时,客户端可以再次在终端中输入。服务器和客户端位于不同的服务器中。有人可以帮助我在这种情况下如何捕获 ctrl+c 信号吗?

最佳答案

您的服务器处理中断信号,当运行服务器的终端获得 Ctrl-C 时,进程将收到该信号。它与在 telnet 中按下 Ctrl-C 无关。

telnet 通过发送两个控制序列对 Ctrl-C 作出 react :

您可以对接收到的这些序列使用react(具体来说,是您的情况中的第一个序列;对第二个序列使用react应该是 telnet 协议(protocol)的强制要求,但如果您断开连接,则这是一个没有实际意义的问题 :P )。

关于c - 在C编程中处理客户端-服务器套接字中的ctrl+c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59261547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com