我想实现从客户端的控制台读取信息发送到服务器端,在服务器端的控制台打印也来,
发送好像是可以
但Server端总也接受不了。请高手指教:客户端:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;public class Client { public static void main(String args[]) throws IOException { Socket s = new Socket("192.168.10.160", 8888);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw= new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
while (true) {
String str = br.readLine();
System.out.println("msg: " + str);
bw.write(str);
}
}
}
服务器端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;public class SServer { public static void main(String args[]) throws IOException { ServerSocket ss = new ServerSocket(8888);
Socket s = ss.accept();
BufferedReader isr = new BufferedReader(new InputStreamReader(s.getInputStream()));
while (true) {
String str = isr.readLine();
System.out.println(str);
}
}
}
发送好像是可以
但Server端总也接受不了。请高手指教:客户端:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;public class Client { public static void main(String args[]) throws IOException { Socket s = new Socket("192.168.10.160", 8888);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw= new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
while (true) {
String str = br.readLine();
System.out.println("msg: " + str);
bw.write(str);
}
}
}
服务器端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;public class SServer { public static void main(String args[]) throws IOException { ServerSocket ss = new ServerSocket(8888);
Socket s = ss.accept();
BufferedReader isr = new BufferedReader(new InputStreamReader(s.getInputStream()));
while (true) {
String str = isr.readLine();
System.out.println(str);
}
}
}
while (true) {
String str = br.readLine();
System.out.println("msg: " + str);
bw.write(str);
bw.flush();
}
bw.flush();不管用。
改用PrintWriter,就可以了!祝你好运,呵呵!!
1.使用BufferedWriter, 数据放在缓存,并没有发送出去
BufferedWriter bw= new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
直接改成
OutputStream os = s.getOutputStream();2. 发送数据没有回车, 服务器readLine永远也得不到回车换行内容客户端改成BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
OutputStream os = s.getOutputStream();
while (true) {
String str = br.readLine();
str = str + "\r\n";
System.out.print("msg: " + str);
os.write(str.getBytes());
}