服务器端开了一个serverScoket端口,并监听
this.ss = new ServerSocket(dijc201.getSocketPort());
Socket socket = ss.accept();
问题是各客户端通过 new Socket(ip, port)时,抛以下异常
java.net.SocketException: Connection timed out:could be due to invalid address
而在服务器端new ServerSocket(dijc201.getSocketPort());时抛
java.net.BindException: The socket name is already in use.感觉上端口是开了,但没有在监听...重启应用服务器不正常,重启主机后正常,请大家帮忙分析分析 

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【zskfyl】截止到2008-07-24 11:49:12的历史汇总数据(不包括此帖):
    发帖的总数量:2                        发帖的总分数:40                       每贴平均分数:20                       
    回帖的总数量:2                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:2                        结贴的总分数:40                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    端口被占用用netstat -ano 看看是哪个进程占用了端口,然后K掉它还要设置:
    ss.setReuseAddress(true);以确保程序退程后,端口能被再次使用
      

  3.   

    请楼上解释一下:
    问题是各客户端通过 new Socket(ip, port)时,抛以下异常 
    java.net.SocketException: Connection timed out:could be due to invalid address 我在服务器端使用多线程处理 ss.accept()获得的Socket,应该不会发生联不上的情况
      

  4.   

    你在任务管理器中的进程  Javaw.exe并没有关闭
    所以会报这种异常
    下次你直接掉这个进程就行。没必要重启主机。
      

  5.   

    异常显示你的客户端连接的Address不对,请检查你的ip变量的值是否正确,可以先在命令行ping一下端口占用是因为你重复调用new ServerSocket(port)
      

  6.   

    从客户端是可以ping的通的,,但是telnet端口是不通的.奇怪就在这里,在服务器端提示端口被占用,但在客户端去telnet不通????
      

  7.   

    参考下吧
    import java.io.*;
    import java.net.*;
    public class Server {
    private int port=8000;
    private ServerSocket serverSocket;
    public Server() throws IOException {
    serverSocket = new ServerSocket(port,3);    //连接请求队列的长度为3
    System.out.println("服务器启动");}
    public void service() {
    while (true) {
    Socket socket=null;
    try {socket = serverSocket.accept();     //从连接请求队列中取出一个连接
    System.out.println("New connection accepted " +socket.getInetAddress() + ":" +socket.getPort());
    }catch (IOException e) {
    e.printStackTrace();
    }finally {
    try{
    if(socket!=null)socket.close();
    }catch (IOException e) {
    e.printStackTrace();}}}}
    public static void main(String args[])throws Exception {
    Server server=new Server();Thread.sleep(60000*10);      //睡眠10分钟//
    server.service();}
    } 关掉杀毒软件,关掉windows的防火墙
      

  8.   

    因为ServerSocket.accept()方法是阻塞调用的.所以,没有新来连接的情况下是不会返回的,这样,有可能程序无法自然退出. 
    你说的是单线程的socket连接,我这边针对每个建设立的socket连接都启用了新的线程进行处理,这样应该不会因为一个线程的没有返回影响其他.
    重启应用服务器不正常,重启主机后正常,请大家帮忙分析分析  是指重启应用服务器(websphere)后没有解决问题,重启主机后此端口才可用