我在主机上开了一个36000的SOCKET端口,但问题是我去TELNET时不通,而我重新去NEW的时候,报了这样的错:java.net.BindException: The socket name is already in use.这个应该是该端口被占用吧?
也有说法是该端口没有对外倾听,请问这到底是怎么回事呢?
也有说法是该端口没有对外倾听,请问这到底是怎么回事呢?
解决方案 »
- java 网络编程 获得流
- TimeUnit.MILLISECONDS.sleep Thread.sleep的区别 ?
- 如何用正则表达式匹配汉字
- 大家快来这里呀这里有好多java视频下载肯定有你想要的
- Hibernate问题
- 初学者的问题:http://localhost:8080/index.html成功显示,但http://localhost:8080/index.jsp不能成功显示
- 求一个操作文本的效率解决方案,困扰,解决狂给分.
- RMI启动为什么特别慢?
- 简单问题,画的字为什麽不显示
- 怎样修改系统时间和日期?
- 程序失去焦点以后,如何获得并显示出当前位置坐标?
- 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端口连接)