关于SOCKET端口被占用的问题!!! 我在主机上开了一个36000的SOCKET端口,但问题是我去TELNET时不通,而我重新去NEW的时候,报了这样的错:java.net.BindException: The socket name is already in use.这个应该是该端口被占用吧?也有说法是该端口没有对外倾听,请问这到底是怎么回事呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先查看机器的端口 有没有被占用 netstat -a -n 端口是程序写死的,不能随便改啊现在出现这个问题,导致CLIENT无法与SERVER连接通信,一定要重启主机之后才可以解决。 第一个问题,为什么telnet不上,参考2楼.第二个问题,设置 setReuseAddress为true,确保程序退出后该端口被释放 你去看看你开侦听端口的那个进程.是不是还没有结束.Windows的话,把你的开发工具保存,关掉,打开任务管理器,把java开头的进程全干掉,然后再试试. 很可能是你之前运行了程序的时候没把这个程序结束,这样端口就一直被占用,你下此使用此端口的时候就自然的不能用.你可以试的把所有的JAVA程序都结束,然后再开看看. 这个的可能性最大。36000 这个端口一般谁会占用呢? 你到 google搜一下就知道了。呵呵! 应该是你开始启动的java 程序没有真正的关掉! 在任务管理器里把所有的javaw.exe这个进程结束,在重新启动程序应该就没得问题了吧! 谢谢LS的各位主机的系统是AIX的,命令也不是很明白如何去查看端口被哪个程序占用我在主机上把我程序跑的所有JVM都给重启的了,还是不行,一定要重启那个主机我们主机上应该不会有其它系统的程序来占用这个端口的,这个可以确定的。就是那天我们的主机人员做了一些操作,然后重启了JVM,就导致了这个问题! 查看端口使用情况netstat -an确定自己的命令所占用的pid,可以用sh脚本来实现不知道你用什么程序来挂载你的jvm一般来说是nohup那么可以把pid输出到一个临时文件上#!/bin/shnohup ./*******.jar &sleep 3echo "$!+2"|bc > tmp.pid另外你的telnet是从那里连接的?外部连接的话,是不是有人把iptables的规则改了假设你用的端口是36000,走的协议是tcpiptables中应该有这么一条-A RH-Firewall-1-INPUT -m state --state NEW -m -p tcp --dport 36000 -j ACCEPT ls,我们的主机没有防火墙。假如36000端口的确是开着的,那么会不有一种情况,当连接过多时,系统就会阻止外面向这个端口TELNET呢? 怀疑端口是CLOSE_WAIT状态,寻求解决方案 CLOSE_WAIT是否要调用closesocket()去强行关闭他呢? 之前new的那个对象没有销毁呢 谁能告诉我怎么才能模拟出服务器CLOSE_WAIT的状态呢?谁能告诉我怎么才能模拟出服务器CLOSE_WAIT的状态呢?谁能告诉我怎么才能模拟出服务器CLOSE_WAIT的状态呢? java.net.BindException: The socket name is already in use就是说这个端口已经被使用了。如果是链接过多,系统响应不过来,报的是另外一个错(以前遇到过) 把问题重新描述一下:之前主机出现一个问题:在主机重启JVM之后,出现了CLIENT无法向主机发送数据,TELNET主机的SOCKET端口也不成功 的现象。由于当时没有留下日志,过后才发现SOCKET端口CLOSE_WAIT状态时会出现这种情况,但是无法确定当时是否端口就是CLOSE_WAIT状态。 请教一下:1、出现这种问题还会有其它可能情况吗?2、当一个SOCKET端口的一个SOCKET连接出现CLOSE_WAIT状态时,是否该端口就无法再被TELNET,其它数据也都无法传输呢?3、SOCKET端口的CLOSE_WAIT状态怎么样才可以模拟出来呢?? 现在有个CLIENT端和这个SOCKET建立了连接,由于异常原因,使得该连接处于CLOSE_WAIT状态! 请问: 1、一直不明白,是否是一个连接异常,就会使得整个SOCKET端口的状态变为CLOSE_WAIT? 2、此时,使用NETSTAT -AN 查看的36000端口是否是CLOSE_WAIT状态? 3、为什么之后的新的连接都失败呢?(都是和这个36000端口连接) 真的不知道为什么,谢谢。 Swing中GridBagLayout布局跟JTree使用时,权重比例失衡? 判断字符串中有几个汉字的正则表达式 操作软件 请大家推荐一些JAVA入门的书,我学过C。谢谢 一个JAVA优先级的问题,请高手帮忙解释一下! 请问高手们,JAVA(状态栏类)有没有这个类啊,小弟急啊,先谢了! 世界变化大快,我有很多不明白,请大家帮帮忙解析一下。 java中怎么用接口啊! 请教JBuild的问题,还有B/S or B/C 程序失去焦点以后,如何获得并显示出当前位置坐标? dhtmlxTree问题 请明白的帮个忙
现在出现这个问题,导致CLIENT无法与SERVER连接通信,一定要重启主机之后才可以解决。
第二个问题,设置 setReuseAddress为true,确保程序退出后该端口被释放
这个的可能性最大。36000 这个端口一般谁会占用呢? 你到 google搜一下就知道了。呵呵!
在任务管理器里把所有的javaw.exe这个进程结束,在重新启动程序应该就没得问题了吧!
主机的系统是AIX的,命令也不是很明白如何去查看端口被哪个程序占用
我在主机上把我程序跑的所有JVM都给重启的了,还是不行,一定要重启那个主机
我们主机上应该不会有其它系统的程序来占用这个端口的,这个可以确定的。就是那天我们的主机人员做了一些操作,然后重启了JVM,就导致了这个问题!
netstat -an确定自己的命令所占用的pid,可以用sh脚本来实现
不知道你用什么程序来挂载你的jvm
一般来说是nohup
那么可以把pid输出到一个临时文件上#!/bin/sh
nohup ./*******.jar &
sleep 3
echo "$!+2"|bc > tmp.pid
另外你的telnet是从那里连接的?
外部连接的话,是不是有人把iptables的规则改了
假设你用的端口是36000,走的协议是tcp
iptables中应该有这么一条
-A RH-Firewall-1-INPUT -m state --state NEW -m -p tcp --dport 36000 -j ACCEPT
假如36000端口的确是开着的,那么会不有一种情况,当连接过多时,系统就会阻止外面向这个端口TELNET呢?
谁能告诉我怎么才能模拟出服务器CLOSE_WAIT的状态呢?
谁能告诉我怎么才能模拟出服务器CLOSE_WAIT的状态呢?
如果是链接过多,系统响应不过来,报的是另外一个错(以前遇到过)
之前主机出现一个问题:在主机重启JVM之后,出现了CLIENT无法向主机发送数据,TELNET主机的SOCKET端口也不成功 的现象。
由于当时没有留下日志,过后才发现SOCKET端口CLOSE_WAIT状态时会出现这种情况,但是无法确定当时是否端口就是CLOSE_WAIT状态。
请教一下:
1、出现这种问题还会有其它可能情况吗?
2、当一个SOCKET端口的一个SOCKET连接出现CLOSE_WAIT状态时,是否该端口就无法再被TELNET,其它数据也都无法传输呢?
3、SOCKET端口的CLOSE_WAIT状态怎么样才可以模拟出来呢??
请问:
1、一直不明白,是否是一个连接异常,就会使得整个SOCKET端口的状态变为CLOSE_WAIT?
2、此时,使用NETSTAT -AN 查看的36000端口是否是CLOSE_WAIT状态?
3、为什么之后的新的连接都失败呢?(都是和这个36000端口连接)