如果在C中响应时间太长,如何取消函数调用?

Joe*_*123 5 c ftp client server

有没有办法调用一个函数,然后取消或跳过调用,如果响应时间太长?

我正在模拟ftp连接,我正在使用此函数调用从服务器收到响应:

status = receiveMessage(ccSocket, replyMsg, sizeof(replyMsg), &msgSize);
Run Code Online (Sandbox Code Playgroud)

有没有办法等待,比方说,5秒,并跳过函数调用,如果还没有响应?

小智 5

您可以使用许多不同的方法来解决此问题.

  1. 使用"选择"调用,允许系统检查是否有可用数据,使用给定的超时允许您取消检查是否需要很长时间.
  2. 异步设计使您能够"观察"套接字而无需在该套接字上"等待",这意味着只有在知道数据可用时才会运行您的进程3
  3. 非阻塞设计允许您出于多种不同的原因使用您的处理器,其中套接字上的通信不应该保持您的处理器,类似于Async通信的方式,但是有一点点扭曲