2010-11-25 7 views
0

J'exécutais un programme de socket. Le programme est, juste en écho à l'entrée de l'utilisateur, par le serveur .ie si l'utilisateur donne une entrée comme Apple la réponse du serveur devrait être Apple. Mais le problème auquel je suis confronté est que le serveur envoie un message (à la place d'Apple) qui était le message de bannière que nous recevons lorsque nous nous connectons au serveur. Une fois le message de bannière terminé, l'erreur suivante s'affiche :Socket Programmation en Java

Exception in thread "main" java.net.SocketException: Software caused connection abort: recv failed 
at java.net.SocketInputStream.socketRead0(Native Method) 
at java.net.SocketInputStream.read(Unknown Source) 
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) 
at sun.nio.cs.StreamDecoder.implRead(Unknown Source) 
at sun.nio.cs.StreamDecoder.read(Unknown Source) 
at java.io.InputStreamReader.read(Unknown Source) 
at java.io.BufferedReader.fill(Unknown Source) 
at java.io.BufferedReader.readLine(Unknown Source) 
at java.io.BufferedReader.readLine(Unknown Source) 
at EchoClient.main(EchoClient.java:69) 

Après mon code:

import java.net.*; 
import java.io.*; 
public class EchoClient 
{ 
    public static void main(String[] args) throws IOException 
    { 
     Socket echosocket = null; 
     PrintWriter out =null; 
     BufferedReader in=null; 

     //establish the socket connection between the client and the server 
     // open a PrintWriter and a BufferedReader on the socket: 

     try 
     { 
      echosocket = new Socket("ltesol1.comm.mot.com",22); 
      out=new PrintWriter(echosocket.getOutputStream(),true);  
      in=new BufferedReader(new InputStreamReader(echosocket.getInputStream()));  

     } 
     catch(UnknownHostException e) 
     { 
      System.err.print("Unable to find the host dkc678-01"); 
      System.exit(1); 
     } 
     catch(IOException e) 
     { 
      System.err.print("No IO for host dkc678-01"); 
      System.exit(1); 
     } 

     BufferedReader stdIn=new BufferedReader(new InputStreamReader(System.in)); 

     String userInput; 

     while((userInput =stdIn.readLine())!= null) 
     { 
      out.println(userInput);  
      System.out.println("echo :" + in.readLine()); 
     } 

     out.close(); 
     in.close(); 
     stdIn.close(); 
     echosocket.close(); 
    } 

} 
+1

Veuillez formater votre code/message, utilisez le bouton 101010 pour le code. Je vous remercie. – Jochem

+1

Faites un effort pour réduire le code à un programme minimal qui présente la faute. Vous avez actuellement un tas de choses non pertinentes mélangées. –

+1

Veuillez arrêter le formatage du message à chaque modification. –

Répondre

0

Pouvez-vous s'il vous plaît commenter ma suggestion d'un autre service (c.-à-sshd/serveur telnet) écoute le port 22 sur le côté serveur? Ou sinon donnez-nous le code du serveur?

+0

Vous avez raison Jochem .... C'est une connexion SSH .... vous voulez dire que je dois changer le port ...? alors quel pourrait être le port? – vidhya

+0

Eh bien, le port d'écho par défaut est le port 7, c'est peut-être ce que vous prévoyez d'utiliser. Sinon, votre client doit se connecter au port SAME sur lequel votre application-serveur écoute (si vous en avez réellement une) – Jochem

0

Le port 22 est généralement utilisé pour ssh qui est une connexion cryptée. Vous ne pouvez pas utiliser un flux de texte brut.

Dans les deux cas, le serveur déconnecte la connexion. Vous devez découvrir pourquoi il le fait.

2

Si vous voulez aussi vous connecter à un SSH-Server, vous devez utiliser le protocole ssh: http://javassh.org

Vous devriez trouver les sources d'un client ssh-il.