为了账号安全,请及时绑定邮箱和手机立即绑定

Java之TCP编程的细节问题:br.readLine()方法

Java之TCP编程的细节问题:br.readLine()方法

守着一只汪 2019-03-21 18:15:40
客户端键盘录入数据,然后发送给服务器端,不知为什么,br.readLine()方法的位置不同,就可能出现服务器端报错客户端代码:public class Client {    public static void main(String[] args) throws UnknownHostException, IOException {        Socket client=new Socket("192.168.1.109",8888);        BufferedReader br=new BufferedReader(new                 InputStreamReader(System.in));        BufferedWriter bw=new BufferedWriter(                new OutputStreamWriter(client.getOutputStream()));                String s=null;        while(true)        {            if(s.equals("886"))                break;            s=br.readLine();            bw.write(s);            bw.newLine();            bw.flush();        }        client.close();        br.close();        bw.close();    }}服务器代码:public class Server {    public static void main(String[] args) throws IOException {        // TODO 自动生成的方法存根        ServerSocket ss=new ServerSocket(8888);        Socket s=ss.accept();        BufferedReader br=new BufferedReader(                new InputStreamReader(s.getInputStream()));        String str=null;        while((str=br.readLine())!=null)        {            System.out.println(str);        }    }}报错信息:Exception in thread "main" java.net.SocketException: Connection resetat java.net.SocketInputStream.read(Unknown Source)at java.net.SocketInputStream.read(Unknown Source)at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)at sun.nio.cs.StreamDecoder.implRead(Unknown Source)at sun.nio.cs.StreamDecoder.read(Unknown Source)at java.io.InputStreamReader.read(Unknown Source)at java.io.BufferedReader.fill(Unknown Source)at java.io.BufferedReader.readLine(Unknown Source)at java.io.BufferedReader.readLine(Unknown Source)at com.znfsy.www.tcp.Server.main(Server.java:18)        就不报错了,不知道为什么?望各位同志们看看
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

https://img1.sycdn.imooc.com//5cc262b4000113ab08000426.jpg

你的第一个客户端代码中 s 是 null, 因此进入 while 中时, 导致 NullPointerException, 因此客户端直接退出了, 进而和服务器的连接没有正常关闭, 所以服务器报 Exception in thread "main" java.net.SocketException: Connection reset 异常.

第二个客户端代码中, while((s=br.readLine())!=null), 因此变量 s 就不是 null, 所有就没问题呗.


查看完整回答
反对 回复 2019-04-26
  • 1 回答
  • 0 关注
  • 860 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号