【问题标题】:Running a piece of code for a limited time在有限的时间内运行一段代码
【发布时间】:2023-03-22 09:07:02
【问题描述】:

我一直在开发实时消息传递软件。在我的代码中,我创建了一个 ServerSocket 对象并等待客户端连接到它。

...
ServerSocket serverSocket=new ServerSocket(serverPort);
socket=serverSocket.accept();
...

然而,如果没有客户端在特定的时间内尝试连接到服务器,比如 10 秒,我的代码应该能够停止等待客户端并继续运行下一行。但是,代码卡在socket=serverSocket.accept(); 中,直到客户端尝试建立连接。我该如何避免呢?

【问题讨论】:

  • 移动套接字=serverSocket.accept();到另一个线程。

标签: java sockets network-programming serversocket


【解决方案1】:

在accept之前设置socket的超时时间如下

serverSocket.setSoTimeout(10000); // 10 secs. time is in milisecs.
socket=serverSocket.accept();

如果没有客户端继续前进,这将阻止接受 10 秒。

但如果您打算保持服务器套接字打开,则创建一个新线程来接受客户端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 2022-11-02
    • 1970-01-01
    相关资源
    最近更新 更多