我正在通过 TCP socket 一个一个地发送一组浮点数。我的服务器(接收器 - 同时处理多个请求)程序应该读取数据,直到接收到值 0。如果客户端(发送器)在连接后 10 秒内(或在最后一个发送值之后)没有发送任何东西,我想要服务器关闭该连接。我发现了这种信号方法,但我认为在线程中使用它不是最佳选择,但更可能是 fork() 因为它迫使我使用全局变量。我必须将“socket”参数发送给函数,这样我就可以关闭它并且AFAIK这是不可能的。
void time_out(int semnal) {
printf("Time out.\n");
close(socket);
exit(1);
}
每次客户端连接或发送某些东西时,我称之为:
signal(SIGALRM, time_out);
alarm(10);
我还有哪些其他选项必须数 10 秒才能重新启动此计时器?