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

时间:2012-03-21 16:04:19

标签: java sockets

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,但没有任何工作正常 那么可能的解决方案是什么?

另外值得一提的是我正在使用一个监听器服务,它创建一个上面提到的新服务器代码来处理特定的客户端请求...... 所以现在可以解决?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

摆脱available()测试。你有它回到前面,它无论如何都无效。 readLine()将在没有数据时阻塞。只需测试readLine()的返回值为null,然后中断。