有什么方法可以防止我的应用程序在创建套接字后立即崩溃?该程序在收到连接后会立即解冻,但它可能会误导用户。
我曾尝试将套接字创建方法等放在一个线程中并从那里运行它,但这不起作用。
编辑:除非给套接字一定的时间然后在过期后断开连接是可行的吗?
在单独的线程中运行它是正确的方法,因为 Socket.accept() 调用是阻塞的(即它会阻塞您调用它的线程,直到它获得连接)。
你的线程架构一定有问题。发布一些代码,也许我可以告诉你到底是什么。
编辑:给套接字一个短暂的超时不会避免阻塞,或者在有人连接之前超时,而在超时之前获得连接与当前设置没有任何区别。
您的程序不会崩溃,它只是在等待连接,因为java.io
库正在阻塞。
为了防止等待连接,您可以使用非阻塞java.nio
类或启动一个Thread
新线程并让这个新线程成为等待连接的线程。