有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从socket读取字符串错误连接重置错误

java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader(is));

String cmd=null;
while(is.available()<1){}
cmd = br.readLine();

System.out.println("cmd: "+cmd);

if(cmd.equals("search")){

    String[] param = br.readLine().split(",");

    for(String s:param){
        System.out.println(s);
    }

这是接受服务器发送的字符串的客户端代码。但是在连接重置错误的cmd=br.readLine()...行中引发了异常

服务器代码是

Socket(InetAddress.getLocalHost(),1234);
OutputStream os = s.getOutputStream();InputStream is=s.getInputStream();
java.io.BufferedWriter bw=new java.io.BufferedWriter(new java.io.OutputStreamWriter(os)); 
String ss="search";
bw.println(ss);
bw.flush();
System.out.println("search cmded");        

String param = "a,*,0,-1";
bw.println(param);
bw.flush();
System.out.println("param sent");

我尝试过使用print writer和bufferedwriter,但都没有正常工作 那么,可能的解决方案是什么呢

还有一件值得一提的事情是im使用了一个侦听器服务,它创建了一个新的服务器代码来处理特定的客户端请求。。。 所以现在可以解决这个问题了


共 (2) 个答案

  1. # 1 楼答案

    在服务器中,您的BufferedWriter名为bw,但您正在向pw写入

  2. # 2 楼答案

    摆脱available()测试。你把它从后到前,反正它是无效的。readLine()将在没有数据时阻塞。只需测试readLine()的返回值是否为null,然后中断