问题描述
- 为什么我只运行下面的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
怎么办
解决方案
你监听的是所有地址啊,这个8888很可能被其他程序使用的,即虽然你自己的客户端没有连接,但是不能保证别的程序使用了8888端口。建议换一个端口试试,我的电脑商就有一个进程占用了8888端口。
解决方案二:
建议楼主先调试一下,看看哪里有问题,或者到哪里运行了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(localHosti); System.out.println(""本机已经使用了端口:""+i); } catch(UnknownHostException e) { //e.printStackTrace(); } catch(IOException e) { // e.printStackTrace(); } } System.out.println(""执行完毕!""); } }
时间: 2024-09-03 13:08:20