Cha*_*ara 8 java sockets multithreading jvm
我在我的一个Java应用程序中使用Socket通信.我知道如果程序遇到任何异常终止,监听端口不会关闭,程序无法启动,因为它报告"端口已打开.."我还有处理这个问题?用于处理此事的一般方法是什么?
Gre*_*ill 22
听起来你的程序正在监听套接字.通常,当程序退出操作系统时,会关闭所有可能打开的套接字(包括监听套接字).但是,对于侦听套接字,操作系统通常在程序退出后保留端口一段时间(几分钟),以便它可以处理任何未完成的连接尝试.您可能会注意到,如果您异常关闭程序,那么回来一段时间它会启动就好了.
如果要避免此延迟时间,可以使用setsockopt()
SO_REUSEADDR选项配置套接字.这告诉操作系统你知道重用相同的地址是可以的,你不会遇到这个问题.
您可以使用该ServerSocket.setReuseAddress(true)
方法在Java中设置此选项.
归档时间: |
|
查看次数: |
14102 次 |
最近记录: |