чтение строки из сокета error-connection reset error - PullRequest
0 голосов
/ 21 марта 2012
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 голосов
/ 22 марта 2012

Избавьтесь от доступного () теста. У вас есть это обратно, и это все равно не действует. readLine () заблокирует, пока нет данных. Просто проверьте возвращаемое значение readLine () для нуля и остановите.

0 голосов
/ 21 марта 2012

На сервере ваш BufferedWriter называется bw, но вы пишете в pw.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...