2010-11-25 3 views
0

나는 소켓 프로그램을 실행했다.이 프로그램은 서버에 의해 사용자 입력을 에코 그냥에요. 사용자가 사과로 입력하면 애플은 서버 응답해야합니다. 하지만 지금 당면한 문제는 서버가 우리가 서버에 로그인 할 때 사용하는 배너 메시지 인 Apple 대신 메시지를 보내는 것입니다. 배너 메시지가 끝나면 다음 오류가 표시됩니다. :소켓 프로그래밍에서 자바

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/텔넷 서버) 서버 측에서 포트 22을 듣고 나의 제안에 대해 언급하시기 바랍니다 수 :

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) 

다음은 내 코드입니다? 그렇지 않으면 서버 코드를 제공합니까?

+0

당신은 맞습니다. Jochem .... 그 SSH 연결 .... 내가 포트를 변경해야한다는 것을 의미합니까 ...? 어느 쪽이 항구 일 수 있니? – vidhya

+0

글쎄, 기본 에코 포트는 포트 7입니다. 어쩌면 그것이 사용하고있는 포트 일 것입니다. 그렇지 않으면 클라이언트가 서버 응용 프로그램이 수신 대기하는 것과 동일한 포트에 연결해야합니다 (실제로 서버 응용 프로그램이있는 경우) – Jochem

0

포트 22는 일반적으로 암호화 된 연결 인 ssh에 사용됩니다. 일반 텍스트 스트림을 사용할 수 없습니다.

두 경우 모두 서버 연결이 끊어졌습니다. 왜 그렇게하는지 알아야합니다. http://javassh.org

당신은 거기에 SSH 클라이언트의 소스를 찾아야한다 : 당신이 SSH-서버에 연결 너무합니다

2

, 당신은 SSH 프로토콜을 사용해야합니다.

관련 문제