为什么我这边的客户端老是连接不上服务器端的,客户端里面的IP填的是另一台电脑的IP地址。请问要怎么样才能连接上来,在dos窗口也能聊天。
代码如下:
服务器端:
import java.net.*;
import java.io.*;
public class TCPServer {
public static void main(String[] args) {
try{
ServerSocket ss = new ServerSocket(5550);
Socket s = ss.accept();
System.out.println("一个客户端已连接上来");
BufferedReader bw = new BufferedReader(new InputStreamReader(s.getInputStream()));
System.out.println("客户端说:"+bw.readLine());
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(s.getOutputStream());
String line = br.readLine();
while(!line.equals("bye")){
pw.println(line);
pw.flush();
System.out.println("客户端说:"+bw.readLine());
line = br.readLine();
}
s.close();
br.close();
bw.close();
pw.close();
ss.close();
//System.exit(0);
}catch(Exception e){
e.printStackTrace();
}
}
}
客户端代码如下:
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) {
try{
Socket s = new Socket("192.168.1.104",5550);
BufferedReader bw = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter pw = new PrintWriter(s.getOutputStream());
String st = bw.readLine();
while(!st.equals("bye")){
pw.println(st);
pw.flush();
System.out.println("服务器端说:" +br.readLine());
st = bw.readLine();
}
br.close();
bw.close();
bw.close();
s.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
你的服务器端无限循环接受信息那段有问题,你只能readline到一次,我把你的代码稍微改了下,测试能进行聊天:
服务端:
import java.net.*; import java.io.*; public class TCPServer { public static void main(String[] args) { try { ServerSocket ss = new ServerSocket(5550); Socket s = null; while (true) { s = ss.accept(); BufferedReader br = new BufferedReader(new InputStreamReader(s .getInputStream())); System.out.println("一个客户端已连接上来"); String msg = ""; PrintWriter pw = new PrintWriter(s.getOutputStream()); while ((msg=br.readLine())!=null) { System.out.println("22222"); System.out.println("客户端说:" + msg); pw.println("我是服务器,你刚才说了:" + msg); pw.flush(); if (msg.equals("bye")) { break; } } pw.close(); ss.close(); } } catch (Exception e) { e.printStackTrace(); } } }
客户端:
import java.io.*; import java.net.*; public class TCPClient { public static void main(String[] args) { try { Socket s = new Socket("127.0.0.1", 5550); BufferedReader bw = new BufferedReader(new InputStreamReader( System.in)); BufferedReader br = new BufferedReader(new InputStreamReader(s .getInputStream())); PrintWriter pw = new PrintWriter(s.getOutputStream()); String st = bw.readLine(); while (!st.equals("bye")) { pw.println(st); pw.flush(); System.out.println("服务器端说:" + br.readLine()); st = bw.readLine(); } br.close(); bw.close(); bw.close(); s.close(); } catch (Exception e) { e.printStackTrace(); } finally { } } }
还有socket变成楼主可以用mina做服务端哦~非常好用的东东~呵呵~
追问我是想在两台机上测试喔
追答可以啊~你改ip就行了~没问题的~