Программирование сокетов в Java-обработке с исключением ReadLine

Я новичок в программировании сокетов и пытаюсь выяснить проблему обработки исключений. Я не могу отправить строковое сообщение на сервер от клиента в java, потому что часть readLine моего кода выдает ошибку исключения, когда я запускаю программу. Я попытался выдать Exception в своем классе Server и не получить ошибку с красным подчеркнутым кодом при запуске серверной программы, но когда я запускаю клиентскую программу после серверной программы, я получил ошибку исключения в разделе br.readLine моего кода. В чем может быть причина?

Мой код клиента:

package com.soc;
import java.io.OutputStreamWriter; 
import java.io.PrintWriter;
import java.net.Socket;

public class socClient {

public static void main(String[] args) throws Exception{

    String ip = "localhost";
    int port = 9999;// 0-1023 to 65535
    Socket s = new Socket(ip,port);

    String str = "Hello World";

    OutputStreamWriter os = newOutputStreamWriter(s.getOutputStream());

    PrintWriter out = new PrintWriter(os);
    os.write(str);
    os.flush(); 
}

}

Код моего сервера:

package com.soc;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class socServer {

public static void main(String[] args) throws Exception{

    System.out.println("Server is started");
    ServerSocket ss = new ServerSocket(9999);

    System.out.println("Server is waiting for client request");
    Socket s = ss.accept();

    System.out.println("Client connected");


    BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
    String str = null;
    str = br.readLine();

    System.out.println("Client Data: " +str);
}

}

1 ответ

Решение

Причина в том, что клиент никогда не закрывает сокет, что приводит к сбросу соединения в некоторых операционных системах.

Другие вопросы по тегам