客户端
public class customer{
static Socket server;
public static void main(String[] args)throws Exception{
server=new Socket(InetAddress.getLocalHost(),5678);
BufferedReader in=new BufferedReader(
new InputStreamReader(server.getInputStream()));
PrintWriter out=new PrintWriter(server.getOutputStream());
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
while(true){
String str=wt.readLine();
out.println(str);
out.flush();
if(str.equals("end")){
break;
}
System.out.println(in.readLine());
}
server.close();
}
}
服务器端:public class server {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678);
Socket client=server.accept();
BufferedReader in=new BufferedReader(
new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
BufferedReader wt=new BufferedReader(
new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(
new OutputStreamWriter(client.getOutputStream())); while(true){
String str=in.readLine();
System.out.println(str);
str=wt.readLine();
out.println(str);
out.write(str);
bw.write(str);
out.flush();
bw.flush();
if(str.equals("end"))break;
}
client.close();
}
}
问题在服务器端 为什么用printWriter 的println 方法就没问题 用BufferedWriter的write方法就不行 还有printWriter 的write方法也不行呢 实在想不通啊
高手帮帮忙啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
public class customer{
static Socket server;
public static void main(String[] args)throws Exception{
server=new Socket(InetAddress.getLocalHost(),5678);
BufferedReader in=new BufferedReader(
new InputStreamReader(server.getInputStream()));
PrintWriter out=new PrintWriter(server.getOutputStream());
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
while(true){
String str=wt.readLine();
out.println(str);
out.flush();
if(str.equals("end")){
break;
}
System.out.println(in.readLine());
}
server.close();
}
}
服务器端:public class server {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678);
Socket client=server.accept();
BufferedReader in=new BufferedReader(
new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
BufferedReader wt=new BufferedReader(
new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(
new OutputStreamWriter(client.getOutputStream())); while(true){
String str=in.readLine();
System.out.println(str);
str=wt.readLine();
out.println(str);
out.write(str);
bw.write(str);
out.flush();
bw.flush();
if(str.equals("end"))break;
}
client.close();
}
}
问题在服务器端 为什么用printWriter 的println 方法就没问题 用BufferedWriter的write方法就不行 还有printWriter 的write方法也不行呢 实在想不通啊
高手帮帮忙啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
例如
str=wt.readLine();
while(!str.equals("end")){
out.write(str);
str=wt.readLine();}
out.flush();
这样就没问题了
郁闷哦 弄了我困惑了好久~~
调用flush是刷新缓冲区,他会将数据写入到stream中,而调用close是关闭缓冲区,他同样也将数据写入到stream中,但是如果用flush的话,程序会一直在那儿等待着你的输入,他会把数据都放在缓冲区里面一直等到你关闭这个缓冲区的时候他才把数据送走,所以用flush的时候一直都没有结果输出到屏幕上
而println方法似乎实现机制是把当前行的立刻在平台上输出
socket的输入输出流是在同一管道上进行的 在调用flush清空缓冲流后 释放输出流 然后转换为输入流???
还是模模糊糊啊 。