簡體   English   中英

套接字:無法連接到服務器或特定端口

[英]Socket: could not connect to server or specific port

我正在嘗試通過端口和主機名連接服務器。
我找到一個程序,但是當我嘗試運行它時,它將顯示以下異常

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的用戶”,那么服務器應該給出任何響應,例如返回相同的String或大寫或其他形式的轉換。

一些問題:
1.我編寫客戶端Java文件,但是是否需要編寫服務器Java文件。
2.我們可以使用ip和port發送請求嗎?
3.我們可以使用主機名嗎?
4.任何回顯服務器名稱? 我需要向該服務器發送消息,想知道響應。
5.我同時嘗試了server,java和client.java,然后得到了結果? 這是我的解決方案嗎

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檢查服務器是否在您指定的端口上運行-如果沒有服務器可用,您將獲得與Java程序相同的connetion refused

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

不確定您要指的是哪個服務器和客戶端。


一些其他參考:

您還必須在本地主機中運行服務器程序。 由於10008端口未在您的計算機上毀壞,因此您將獲得此異常。

一些問題:

  1. 我寫客戶端Java文件,但是是否需要寫服務器Java文件。

    您可以編寫服務器程序,也可以連接到遠程服務器。 在這種情況下,您應該在遠程服務器中同時具有ip和運行端口。

  2. 我們可以使用ip和port發送請求嗎?

    是你們都需要發送一條消息。

  3. 我們可以使用主機名嗎?

    如果您的計算機可以解析您的主機名,那么您可以這樣做。 否則您可以使用IP地址

  4. 任何回顯服務器名稱? 我需要向該服務器發送消息,想知道響應。

    我對此一無所知,需要在網上搜索。

  5. 我同時嘗試了server,java和client.java,然后得到了結果? 這是我的解決方案嗎

是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM