java 网络编程 为什么采用BufferedReader服务器读不到数据。

服务器:publicclassServerdemo{publicstaticvoidmain(String[]args)throwsIOException{System.... 服务器:
public class Serverdemo {
public static void main(String [] args) throws IOException{
System.out.println("服务器启动.");
final ServerSocket ss = new ServerSocket(10000);
while(true){
final Socket s = ss.accept();
Thread t = new Thread(new Runnable() {

@Override
public void run() {
try{
InputStream in = s.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));

// byte [] buf = new byte[1024];
//
// int len = in.read(buf);
// String str = new String(buf,0,len);
System.out.println("接收到::"+br.readLine());
OutputStream out = s.getOutputStream();
out.write("知道了!".getBytes());
s.close();
}
catch (Exception e){
}
}
});
t.start();
}
}
}
客户端:
public class Clientdemo{
public static void main(String[] args) throws UnknownHostException, IOException{
System.out.println("客户端启动.");
Socket s = new Socket("127.0.0.1", 10000);
OutputStream out = s.getOutputStream();
out.write("哥们跪了!".getBytes());
InputStream in = s.getInputStream();
byte [] buf = new byte[1024];
int len = in.read(buf);
String str = new String(buf,0,len);
System.out.println(str);
s.close();
FileWriter fileWriter = new FileWriter("mytext");
fileWriter.write(str);
fileWriter.close();
}
}
服务器用注释的代码就可以读取数据了,为什么?
展开
 我来答
好嘛我是新来的
2015-09-03 · TA获得超过356个赞
知道小有建树答主
回答量:120
采纳率:100%
帮助的人:74.6万
展开全部

1,网络编程传输的数据都是以二进制格式来传输的。

2,所以传输流第一层必须使用字节流而不能使用字符流

3,后面就可以使用BufferedReader套接在字节流外层了

例:

BufferedReader clientReader = new BufferedReader(new InputStreamReade(socket.getInputStream()));//读数据
 PrintStream  printStream = new PrintStream(socket.getOutputStream()); // 发送数据  
 
printStream.println ("xxxxxxx");发送一个带换行符的数据
clientReader.readline();//接收带换行符的数据

4,您也可以试试使用BufferedInputStream。


百度网友ce7f3ccb4
2012-11-20 · TA获得超过1950个赞
知道大有可为答主
回答量:2299
采纳率:0%
帮助的人:1920万
展开全部
这样写吧,
BufferedReader clientReader = new BufferedReader(new InputStreamReade(socket.getInputStream()));//读数据
PrintStream printStream = new PrintStream(socket.getOutputStream()); // 发送数据

printStream.println ("xxxxxxx");发送一个带换行符的数据
clientReader.readline();//接收带换行符的数据

就可以了独到数据了额
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
llei32wang
2012-11-18 · TA获得超过2736个赞
知道大有可为答主
回答量:1478
采纳率:60%
帮助的人:1414万
展开全部
br.readLine() 是按行读取 没有收到换行符br.readLine()认为一行没结束在等换行符所以没有输出。

改用br.read()方法读读看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
庹涵忍0p
2012-11-18 · TA获得超过3561个赞
知道小有建树答主
回答量:624
采纳率:0%
帮助的人:533万
展开全部
用PrintWriter对象来写数据,通常它和BufferedReader是结合使用的,你试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yanan4478
2015-08-31 · TA获得超过276个赞
知道小有建树答主
回答量:261
采纳率:0%
帮助的人:155万
展开全部
把bufferedReader写到request.getParameter前面试试看,先用request获取参数会截取掉bufferedReader中的数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式