客户端与服务端用BufferedReader流传输,为什么在控制台打印不出来!

whereismymindM 2018-03-22 09:34:52
应该说是客户端由控制台输入数据,然后发给服务端,结果服务端控制台不显示,而如果客户端不由控制台输入,直接在程序内创建字符串却可以传过去,帮忙看下代码哪里错了:
客户端:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {

public static void main(String[] args) {
Socket client=null;
BufferedWriter bdw=null;
BufferedReader bdr=new BufferedReader(new InputStreamReader(
System.in));//数据由控制台输入,发不出去,不由控制台输入,却可以
try {
client=new Socket("localhost",8886);
bdw=new BufferedWriter(
new OutputStreamWriter(client.getOutputStream()));

String s="阀节流阀";
while(true){
s=bdr.readLine();
bdw.write(s);
bdw.flush();

}

} catch (UnknownHostException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}

}

服务端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

public static void main(String[] args) {
ServerSocket server=null;
try {

server=new ServerSocket(8886);
Socket client=server.accept();
System.out.println("一个客户端已连接");
BufferedReader bdr=new BufferedReader(new InputStreamReader(
client.getInputStream()));
StringBuilder sb=new StringBuilder();
String msg=null;
//int len=0;
while(true){
msg=bdr.readLine();
sb.append(msg);
sb.append("\r\n");
System.out.println(sb.toString().trim());
}

} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

}

}
...全文
565 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
whereismymindM 2018-04-04
  • 打赏
  • 举报
回复
引用 1 楼 qq_36157505 的回复:
发送的数据后面加上“\r\n”;
----------------------------------------------------- while(true){ s=bdr.readLine(); s=s+"\r\n"; bdw.write(s); // bdw.write("\r\n"); bdw.flush(); },改了之后可以传输,但是为什么客户端第二次发送的数据,服务端会把第一次发的数据再显示一遍?
kain_curd 2018-04-02
  • 打赏
  • 举报
回复
发送的数据后面加上“\r\n”;
kain_curd 2018-04-02
  • 打赏
  • 举报
回复
BufferedReader 的readline方法要以“\r\n”作为结束符号,不然就一直不结束,

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧