2010-11-25 9 views
0

私はソケットプログラムを実行していました。プログラムは、ユーザ入力をエコーするだけです。ユーザがAppleの入力をAppleの入力とすれば、 がサーバーに返されます。 しかし、今私が直面している問題は、サーバは、私たちがサーバにログインするときに取得したバナーメッセージであった(Appleの代わりに)メッセージを送信しています。バナーメッセージが終了すると、次のエラーが表示されます:ソケットプログラミングin 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) 

以下は、私のコードです:

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

コード/メッセージをフォーマットしてください。コードに101010ボタンを使用してください。ありがとうございました。 – Jochem

+1

エラーを示す最小限のプログラムにコードを縮小するように努力します。あなたは現在、無関係のものが混在しています。 –

+1

編集ごとに投稿のフォーマットを解除してください。 –

答えて

0

あなたは私の提案についてコメントすることができ、他のサービス(すなわちSSHD/telnetサーバ)は、サーバー側のポート22を聞いていること?それ以外の場合はサーバーコードを教えてください。

+0

あなたは正しいです。ジョーケム....そのSSH接続....あなたはポートを変更する必要があるのですか?どちらがポートになる可能性がありますか? – vidhya

+0

さて、デフォルトのエコーポートはポート7です。おそらくそれはあなたが使用していると思われるものです。それ以外の場合は、サーバーアプリケーションがリッスンしているときにクライアントがSAMEポートに接続する必要があります(実際にサーバーアプリケーションがある場合) – Jochem

0

通常、ポート22は暗号化された接続であるsshに使用されます。プレーンテキストストリームは使用できません。

いずれの場合も、サーバーは接続を切断しています。なぜそれがそれをしているのかを知る必要があります。

2

あなたはSSH-Serverに接続あまりにたい場合は、SSHプロトコルを使用する必要があります。http://javassh.org

あなたがそこにsshクライアントの源を見つける必要があります。

関連する問題