
java服务器端与客户端的问题,我想在两台电脑上运行。比如另一台电脑上运行服务器端,我这边运行客户端
代码如下:
服务器端:
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就行了~没问题的~
本机上测试没问题,怎么回事,我就想把把服务端在另一台机上运行等待客户端连接,然后在我的机子上运行客户端。
Server已打开,客户端连接不上
那就是你的IP没有改好!两台都要改!