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();
}
}
服务器用注释的代码就可以读取数据了,为什么? 展开
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();
}
}
服务器用注释的代码就可以读取数据了,为什么? 展开
5个回答
展开全部
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。
展开全部
这样写吧,
BufferedReader clientReader = new BufferedReader(new InputStreamReade(socket.getInputStream()));//读数据
PrintStream printStream = new PrintStream(socket.getOutputStream()); // 发送数据
printStream.println ("xxxxxxx");发送一个带换行符的数据
clientReader.readline();//接收带换行符的数据
就可以了独到数据了额
BufferedReader clientReader = new BufferedReader(new InputStreamReade(socket.getInputStream()));//读数据
PrintStream printStream = new PrintStream(socket.getOutputStream()); // 发送数据
printStream.println ("xxxxxxx");发送一个带换行符的数据
clientReader.readline();//接收带换行符的数据
就可以了独到数据了额
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
br.readLine() 是按行读取 没有收到换行符br.readLine()认为一行没结束在等换行符所以没有输出。
改用br.read()方法读读看。
改用br.read()方法读读看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用PrintWriter对象来写数据,通常它和BufferedReader是结合使用的,你试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把bufferedReader写到request.getParameter前面试试看,先用request获取参数会截取掉bufferedReader中的数据
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |