繁体   English   中英

java中的套接字编程

[英]Socket Programming in java

我正在执行套接字程序。程序是,只是回显用户输入,由服务器.ie如果用户输入Apple作为Apple服务器回复应该是Apple。 但是现在我面临的问题是,服务器正在发送一条消息(而不是Apple),它曾经是我们登录服务器时收到的横幅消息。横幅消息结束后,将显示以下错误:

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();
    }   

}

如果您也想连接到SSH服务器,则必须使用ssh协议: http : //javassh.org

您应该在那里找到ssh-client的来源。

您能否评论我的建议,即另一个服务(即sshd / telnet服务器)正在侦听服务器端的端口22? 或者给我们提供服务器代码?

端口22通常用于ssh,它是加密连接。 您不能使用纯文本流。

在任何一种情况下,服务器都断开连接。 你需要找出它为什么这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM