0

有什么方法可以防止我的应用程序在创建套接字后立即崩溃?该程序在收到连接后会立即解冻,但它可能会误导用户。

我曾尝试将套接字创建方法等放在一个线程中并从那里运行它,但这不起作用。

编辑:除非给套接字一定的时间然后在过期后断开连接是可行的吗?

4

2 回答 2

1

在单独的线程中运行它是正确的方法,因为 Socket.accept() 调用是阻塞的(即它会阻塞您调用它的线程,直到它获得连接)。

你的线程架构一定有问题。发布一些代码,也许我可以告诉你到底是什么。

编辑:给套接字一个短暂的超时不会避免阻塞,或者在有人连接之前超时,而在超时之前获得连接与当前设置没有任何区别。

于 2012-08-22T08:37:52.117 回答
0

您的程序不会崩溃,它只是在等待连接,因为java.io库正在阻塞。

为了防止等待连接,您可以使用非阻塞java.nio启动一个Thread新线程并让这个新线程成为等待连接的线程。

于 2012-08-22T08:36:37.610 回答