0

ポートとホスト名でサーバーに接続しようとしています。
1つのプログラムを見つけましたが、実行しようとすると、次の例外が表示されます

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とポートを使用してリクエストを送信できますか。
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で定義された標準エコーサーバーがあります。セットアップはオペレーティングシステム環境によって異なります-UbuntuLinuxでは、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 に答える