Socket fermée exception
J'ai écrit un simple serveur et client exemple comme ci-dessous .
Client :
- Ouvrir une connexion
- Obtenir outputstream , écrire de diffuser et de fermer le flux de sortie
-
Obtenir inputstream et lire à partir du flux de données. Obtenir de l'exception à ce point
public class DateServer { public static void main(String[] args) throws InterruptedException { ServerSocket serverSocket = null; Socket client = null; try { serverSocket = new ServerSocket(6013); while (true) { client = serverSocket.accept(); OutputStream outputStream = client.getOutputStream(); InputStream inputStream = client.getInputStream(); System.out.println("" + outputStream + "-" + inputStream); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream)); String line = null; while ((line = bufferedReader.readLine()) != null) { System.out .println("Message recieved from client ::" + line); } PrintWriter printWriter = new PrintWriter(outputStream, true); printWriter.println(new java.util.Date().toString()); client.close(); } } catch (IOException exception) { exception.printStackTrace(); System.err.println(exception); } } }
Client :
public class DateClient {
public static void main(String[] args) throws UnknownHostException,
IOException, InterruptedException {
Socket sock = new Socket("127.0.0.1", 6013);
OutputStream outputStream = sock.getOutputStream();
InputStream inputStream = sock.getInputStream();
System.out.println("" + outputStream + "-" + inputStream);
PrintWriter printWriter = new PrintWriter(outputStream, true);
printWriter.println("Hi Server");
outputStream.close();
System.out.println(sock.isConnected());
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(inputStream));
String line;
while ((line = bufferedReader.readLine()) != null) { //Exception
System.out.println(line);
}
}
}
Arriver en dessous de socket fermée exception dans le Client . Pourriez-vous s'il vous plaît laissez-moi savoir ce que serait la raison.
Exception in thread "main" java.net.SocketException: Socket closed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:146)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:282)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:324)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:176)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:153)
at java.io.BufferedReader.readLine(BufferedReader.java:316)
at java.io.BufferedReader.readLine(BufferedReader.java:379)
at edu.iub.cs.httpserver.DateClient.main(DateClient.java:32)
OriginalL'auteur Abhilash | 2013-10-24
Vous devez vous connecter pour publier un commentaire.
java.net.Exception socketexception socket est fermée
Cette exception signifie que vous avez fermé le socket, puis a continué à essayer de l'utiliser.
Et vous l'avez fermé ici. Fermeture de l'entrée ou la sortie d'une Prise ferme de l'autre de la rivière et le Socket.
System.out.println(sock.isConnected());
est l'impression de vraiHors de propos.
isConnected()
vous indique si vous avez déjà connecté leSocket.
Pas si elle est désormais connecté. (LeisConnected()
etisClosed()
méthodes concernant l'état de la socket ce n'est pas l'état de la connexion.)OriginalL'auteur Todd Jefferson
java.net.SocketException
ne se pose que lorsque u fermer laOutputStream
(ou des) support avant la lecture à partir du serveur.À partir de votre code, supprimer:
et puis essayer..
OriginalL'auteur user3003435