首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:如何清除套接字绑定

问Java:如何清除套接字绑定
EN

Stack Overflow用户
提问于 2010-05-14 03:18:19
回答 3查看 3.7K关注 0票数 0

我在Java SIP客户端中遇到了一些关于套接字的问题。当我绑定到地址和端口时,如果出现错误,我必须尝试重新连接,通常是在我停止并重新启动进程之后。这样做的问题是,端口被绑定,我被迫增加本地端口。

在绑定到目标端口之前,如何删除到该端口的绑定?

如果这是不可能的,那么我如何在进程结束之前捕获它,以便我可以定位套接字绑定并手动关闭它?

@Jason - Jason,但在这种情况下,我正在编写客户端,并且无法访问服务器,我所指的端口在客户端上,并且是本地端口。有没有办法在尝试连接之前刷新端口绑定?如果没有,有没有办法捕获进程中断,就像在perl中一样,有办法捕获一个'die‘信号并做一些后处理,Java有这个功能吗?如果是这样,我可以在套接字连接上调用close()

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-28 05:14:52

通过在线阅读本教程,我找到了一种捕获Java信号的方法-- http://www.ibm.com/developerworks/java/library/i-signalhandling/

这样可以捕获管芯信号并关闭连接。

票数 0
EN

Stack Overflow用户

发布于 2010-05-14 03:29:31

在我的经验中,10次中有9次,这类问题的答案是“查找SO_LINGER”。

如果您在客户机上拔下插头(字面上),服务器乐观地希望它会回来收集您已经在该套接字上发送的数据。因此,它会保留该数据和端口,直到缓冲区清空。

通常,在服务器上,由于您刚刚发现的那种DOS攻击(有意或意外),您会怀着极端的偏见杀死这些缓冲区。

票数 3
EN

Stack Overflow用户

发布于 2010-05-14 18:43:25

不要摆弄SO_LINGER,它只会增加不安全感。真正的问题是,为什么要绑定到本地端口?

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

https://stackoverflow.com/questions/2829621

复制
相关文章

相似问题

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