0

我正在尝试通过端口和主机名连接服务器。
我找到了一个程序,但是当我尝试运行时,它会显示以下异常

java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:208)
at sample.Echoclient2.main(Echoclient2.java:31)
Couldn't get I/O for the connection to: 127.0.0.1
Java Result: 1    

这是我使用的代码。

public class Echoclient2 {
public static void main(String[] args) throws IOException {

    String serverHostname = new String ("127.0.0.1");

    if (args.length > 0)
       serverHostname = args[0];
    System.out.println ("Attemping to connect to host " +
            serverHostname + " on port 10008.");



    Socket echoSocket = null;
    PrintWriter out = null;
    BufferedReader in = null;

    try {
        echoSocket = new Socket(serverHostname, 10008);
        System.out.println("server name"+Inet4Address.getByName(serverHostname));
        out = new PrintWriter(echoSocket.getOutputStream(), true);
        in = new BufferedReader(new InputStreamReader(
                                    echoSocket.getInputStream()));
         System.out.println("Connection accepted " +
            echoSocket.getInetAddress() + ":" +
            echoSocket.getPort());
    } catch (UnknownHostException e) {
        e.printStackTrace();
        System.err.println("Don't know about host: " + serverHostname);
        System.exit(1);
    } catch (IOException e) {
        e.printStackTrace();
        System.err.println("Couldn't get I/O for "
                           + "the connection to: " + serverHostname);
        System.exit(1);
    }

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

    System.out.println ("Type Message (\"Bye.\" to quit)");
while ((userInput = stdIn.readLine()) != null) 
       {
    out.println(userInput);

        // end loop
        if (userInput.equals("Bye."))
            break;

    System.out.println("echo: " + in.readLine());
   }

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

}

我需要什么:
1. 我需要向服务器发送一些消息并希望得到服务器的响应。假设我发送“我是 stackoverflow 的用户”,那么服务器应该给出任何响应,如返回相同的字符串或转换为大写或其他内容。

一些问题:
1.我写客户端Java文件,但我是否需要写服务器Java文件。
2.我们可以使用ip和port发送请求吗?
3.我们可以使用主机名吗?
4. 任何回显服务器名称?我需要向该服务器发送消息想知道响应。
5. 我尝试了 server,java 和 client.java 然后我得到了结果?这个解决方案适合我吗?

4

2 回答 2

3

1. I write client Java File but whether i need to write server java file.

是的,您要么需要编写自己的服务器(如果服务器应该满足一些独特的要求),要么连接到现有的服务器。消息“连接被拒绝”表示在您尝试连接的端口上没有服务器正在运行。

2. Can we send request by using ip and port.

是的。

3. Can we use host name.

是的。您需要 IP 或主机名以及端口。

4. Any echo server name? i need to send message to this server want to know response.

您可以在您的机器上设置一个回显服务器,这样您就可以首先专注于对您的客户端进行编码。在端口 7 处定义了一个标准 Echo 服务器。设置取决于您的操作系统环境 - 在 Ubuntu Linux 上,我必须安装xinetd软件包并在/etc/xinetd.d/echo. 然后,您可以使用该telnet程序验证服务器是否正在运行:

andreas@ubuntu:~$ telnet localhost 7
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello
Hello

使用 telnet 连接到任何端口也是验证服务器是否正在运行和可访问的常用技术。使用您问题中的示例,您可以检查telnet 127.0.0.1 10008服务器是否在您指定的端口上运行 -connetion refused如果没有可用的服务器,您将获得与 Java 程序相同的结果。

5. I try both server,java and client.java then i got result? is this solution for me.

不确定您指的是哪个服务器和客户端。


一些额外的参考:

于 2012-11-08T07:15:30.843 回答
1

您还必须在本地主机上运行您的服务器程序。由于 10008 端口没有在您的机器上损坏,您会收到此异常。

一些问题:

  1. 我编写客户端 Java 文件,但是否需要编写服务器 Java 文件。

    您可以编写服务器程序,也可以连接到远程服务器。在这种情况下,您应该在远程服务器中同时拥有 ip 和运行端口。

  2. 我们可以使用 ip 和端口发送请求吗?

    是的,您需要两者都发送消息。

  3. 我们可以使用主机名吗?

    如果您的机器可以解析您的主机名,您就可以做到。否则你可以使用ip地址

  4. 任何回声服务器名称?我需要向该服务器发送消息想知道响应。

    这个我不知道,需要在网上搜索。

  5. 我尝试了 server、java 和 client.java 然后我得到了结果?这个解决方案适合我吗?

是的。

于 2012-11-08T07:15:18.417 回答