我在主机上开了一个36000的SOCKET端口,但问题是我去TELNET时不通,而我重新去NEW的时候,报了这样的错:java.net.BindException: The socket name is already in use.这个应该是该端口被占用吧?
也有说法是该端口没有对外倾听,请问这到底是怎么回事呢?

解决方案 »

  1.   

    先查看机器的端口 有没有被占用 netstat -a -n
      

  2.   

    端口是程序写死的,不能随便改啊
    现在出现这个问题,导致CLIENT无法与SERVER连接通信,一定要重启主机之后才可以解决。
      

  3.   

    第一个问题,为什么telnet不上,参考2楼.
    第二个问题,设置 setReuseAddress为true,确保程序退出后该端口被释放
      

  4.   

    你去看看你开侦听端口的那个进程.是不是还没有结束.Windows的话,把你的开发工具保存,关掉,打开任务管理器,把java开头的进程全干掉,然后再试试.
      

  5.   

    很可能是你之前运行了程序的时候没把这个程序结束,这样端口就一直被占用,你下此使用此端口的时候就自然的不能用.你可以试的把所有的JAVA程序都结束,然后再开看看.
      

  6.   


    这个的可能性最大。36000 这个端口一般谁会占用呢? 你到 google搜一下就知道了。呵呵!
      

  7.   

        应该是你开始启动的java 程序没有真正的关掉!
        在任务管理器里把所有的javaw.exe这个进程结束,在重新启动程序应该就没得问题了吧!
      

  8.   

    谢谢LS的各位
    主机的系统是AIX的,命令也不是很明白如何去查看端口被哪个程序占用
    我在主机上把我程序跑的所有JVM都给重启的了,还是不行,一定要重启那个主机
    我们主机上应该不会有其它系统的程序来占用这个端口的,这个可以确定的。就是那天我们的主机人员做了一些操作,然后重启了JVM,就导致了这个问题!
      

  9.   

    查看端口使用情况
    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
      

  10.   

    ls,我们的主机没有防火墙。
    假如36000端口的确是开着的,那么会不有一种情况,当连接过多时,系统就会阻止外面向这个端口TELNET呢?
      

  11.   

    怀疑端口是CLOSE_WAIT状态,寻求解决方案
      

  12.   

    CLOSE_WAIT是否要调用closesocket()去强行关闭他呢?
      

  13.   

    之前new的那个对象没有销毁呢
      

  14.   

    谁能告诉我怎么才能模拟出服务器CLOSE_WAIT的状态呢?
    谁能告诉我怎么才能模拟出服务器CLOSE_WAIT的状态呢?
    谁能告诉我怎么才能模拟出服务器CLOSE_WAIT的状态呢?
      

  15.   

    java.net.BindException: The socket name is already in use就是说这个端口已经被使用了。
    如果是链接过多,系统响应不过来,报的是另外一个错(以前遇到过)
      

  16.   

    把问题重新描述一下:
    之前主机出现一个问题:在主机重启JVM之后,出现了CLIENT无法向主机发送数据,TELNET主机的SOCKET端口也不成功 的现象。
    由于当时没有留下日志,过后才发现SOCKET端口CLOSE_WAIT状态时会出现这种情况,但是无法确定当时是否端口就是CLOSE_WAIT状态。 
     请教一下:
    1、出现这种问题还会有其它可能情况吗?
    2、当一个SOCKET端口的一个SOCKET连接出现CLOSE_WAIT状态时,是否该端口就无法再被TELNET,其它数据也都无法传输呢?
    3、SOCKET端口的CLOSE_WAIT状态怎么样才可以模拟出来呢??
      

  17.   

    现在有个CLIENT端和这个SOCKET建立了连接,由于异常原因,使得该连接处于CLOSE_WAIT状态! 
    请问: 
    1、一直不明白,是否是一个连接异常,就会使得整个SOCKET端口的状态变为CLOSE_WAIT? 
    2、此时,使用NETSTAT -AN 查看的36000端口是否是CLOSE_WAIT状态? 
    3、为什么之后的新的连接都失败呢?(都是和这个36000端口连接)