下面是我写的一个server,当客户端向其发送校消息 时 第一次发送消息 ,利用 System.out.println(in.readUTF());屏幕输出 信息,但是客户端却收不到,第二次发送消息 屏幕不输出 信息,但是 客户端却可以收到。但是我把System.out.println(in.readUTF());注释掉后客户端每次都可以收到消息了!!!!为什么???
public class server extends JFrame {
ServerSocket server;
Socket client;
public server() {
setSize(500, 500);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container con = getContentPane();
JButton jb = new JButton("dsa");
con.add(jb);
setVisible(true);
try {
server = new ServerSocket(65521);
while (true) {
client = server.accept();
new talkThread(client).start();
}
} catch (Exception e) {
e.getStackTrace();
}
}
public static void main(String[] args) {
server s = new server();
}
class talkThread extends Thread {
private Socket client1;
public talkThread(Socket client)
{
client1 = client;
}
public void run() {
try {
DataInputStream in = new DataInputStream(client1.getInputStream()); DataOutputStream out = new DataOutputStream(client1.getOutputStream());
while (true) {
System.out.println(in.readUTF());
out.writeUTF(in.readUTF());
out.flush();
}
} catch (Exception e2) {
e2.getStackTrace();
}
}
}
}
public class server extends JFrame {
ServerSocket server;
Socket client;
public server() {
setSize(500, 500);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container con = getContentPane();
JButton jb = new JButton("dsa");
con.add(jb);
setVisible(true);
try {
server = new ServerSocket(65521);
while (true) {
client = server.accept();
new talkThread(client).start();
}
} catch (Exception e) {
e.getStackTrace();
}
}
public static void main(String[] args) {
server s = new server();
}
class talkThread extends Thread {
private Socket client1;
public talkThread(Socket client)
{
client1 = client;
}
public void run() {
try {
DataInputStream in = new DataInputStream(client1.getInputStream()); DataOutputStream out = new DataOutputStream(client1.getOutputStream());
while (true) {
System.out.println(in.readUTF());
out.writeUTF(in.readUTF());
out.flush();
}
} catch (Exception e2) {
e2.getStackTrace();
}
}
}
}
DataInputStream in = new DataInputStream(client1.getInputStream());DataOutputStream out = new DataOutputStream(client1.getOutputStream());
while (true) { System.out.println(in.readUTF());
out.writeUTF(in.readUTF());
out.flush();
} 我觉得应该这样
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
DataInputStream in = new DataInputStream(client1.getInputStream());
DataOutputStream out = new DataOutputStream(client1.getOutputStream());
while (true) { System.out.println(in.readUTF());
out.writeUTF(br.readLine());
out.flush();
}