2 crown437 crown437 于 2015.05.26 08:27 提问

为什么我只运行下面的Server没运行Client,也有一个Client连上来,各位神求助啊

import java.io.*;
import java.net.*;

public class ChatServer {

public static void main(String[] args){

    /*InetAddress ServerIPaddress=null;
    try { ServerIPaddress=InetAddress.getLocalHost();}
    catch (UnknownHostException e) {}
    System.out.println(ServerIPaddress);
    */

    try {
        ServerSocket ss=new ServerSocket(8888);
        while(true){

        Socket s=ss.accept();

System.out.println("a client is connected!"+s.getInetAddress());

      /*  BufferedReader re = new BufferedReader(new InputStreamReader(s.getInputStream()));  
        String str = re.readLine(); 
        System.out.println(str); 
        re.close();
  */

/*DataInputStream dis = new DataInputStream(s.getInputStream());
String str = dis.readUTF();
System.out.println(str);
dis.close();*/

        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

一运行就出来结果
a client is connected!/127.0.0.1
怎么办

2个回答

tongyi55555
tongyi55555   2015.05.26 11:49

你监听的是所有地址啊,这个8888很可能被其他程序使用的,即虽然你自己的客户端没有连接,但是不能保证别的程序使用了8888端口。建议换一个端口试试,我的电脑商就有一个进程占用了8888端口。

u013238347
u013238347   2015.05.26 18:20

建议楼主先调试一下,看看哪里有问题,或者到哪里运行了client;如果说端口被占用,提示的是:JVM_Bind(端口被占用)。或者可以写一个代码查看是否有端口被占用:
import java.io.IOException;

import java.net.InetAddress;

import java.net.Socket;

import java.net.UnknownHostException;

public class sampletest      
{     
    public static void main(String[] args)     
   {     
   for(int i=1;i<256;i++)     
    {     
       try    
       {     
        InetAddress localHost=InetAddress.getLocalHost();     
       Socket socket=new Socket(localHost,i);     
        System.out.println("本机已经使用了端口:"+i);     
      }     
      catch(UnknownHostException e)     
      {     
       //e.printStackTrace();     
       }     
       catch(IOException e)     
       {     
      // e.printStackTrace();     
      }     
    }     
    System.out.println("执行完毕!");     
    }     
}   
u013238347
u013238347 InetAddress ServerIPaddress=null; try { ServerIPaddress=InetAddress.getLocalHost();} catch (UnknownHostException e) {} System.out.println(ServerIPaddress);在这里getLocalhost()这个方法本来就是用来输出你本机的IP地址的,并不是说创建了客户端,你直接把它数出来肯定是有值的啊。这个代码如果端口号没有占用这样写是没有错的。因为一般不进行输出,除非调试。
2 年多之前 回复
crown437
crown437 调试过了发现端口没有占用,实在找不出哪里出了问题
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片