首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java -如何关闭由我的应用程序初始化的重设套接字并立即重新打开它?无论是在TCP还是UDP中

Java -如何关闭由我的应用程序初始化的重设套接字并立即重新打开它?无论是在TCP还是UDP中
EN

Stack Overflow用户
提问于 2012-03-08 20:34:59
回答 1查看 837关注 0票数 0

我有以下的应用程序,如下所示:

代码语言:javascript
复制
Runtime.getRuntime().exec("java -cp /var/dist/Test.jar System.V PDP-11");

它有10到20秒的任务,在端口1965上还包含TCP/UDP服务器。一旦任务完成,我的另一只手会发送一个TCP字节来关闭System.V

代码语言:javascript
复制
Runtime.getRuntime().exec("java -cp /var/dist/Test.jar System.V PDP-11/20");

在不到1秒的时间内,另一个操作执行如上,但这失败了,因为端口1965已经在使用中。但它是用System.exit(0)杀死的

我该怎么解决这个问题?这样它就不会说“已经在使用的端口”了?似乎需要很多时间去初始化通过Java监听的TCP或UDP端口。( nc -l端口会被更快地杀死)。

后续行动:

我试着遵循,但仍然要花时间才能获得那个端口(Linux )。

byte[] buf =新byte50;

sock.setSoTimeout(100);

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-08 21:14:23

操作系统需要一些时间“注意”端口可以再次使用--即使关闭套接字并关闭应用程序也是如此。可以通过以下代码解决问题:

代码语言:javascript
复制
ServerSocket ss = ... //initialization of socket listening on port 1965
ss.setReuseSocket(true);

请记住,上面的代码只是对操作系统的提示,应该尽可能快地释放端口。TCP堆栈的一些外来实现可能不会满足这一要求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9624516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档