簡體   English   中英

客戶端套接字找不到服務器套接字。 盡管端口號相同,但拋出UnknownHostException

[英]Client Socket cannot find Server Socket. Throws UnknownHostException despite having the same port number

在真正開始使用它們之前,我正在關注一個在線教程,以習慣Java中的客戶端和服務器。

我現在要做的就是啟動服務器,然后連接客戶端。 客戶端和服務器只有幾行代碼,對我來說,一切似乎都很簡單,所以我不確定問題出在哪里。

我先運行服務器程序,然后再運行客戶端程序,但是客戶端套接字由於某種原因找不到我的服務器套接字,即使它們具有相同的端口號。

這是代碼。

服務器:

public class Server {


     private ServerSocket serverSocket;
     private int portNumber;

     public Server(int portNumber){
        this.portNumber=portNumber;
    }

    public void run() throws IOException {
        serverSocket = new ServerSocket(portNumber);
        System.out.println("server at port "+portNumber);
        System.out.println("Waiting for client.");
        Socket clientSocket = serverSocket.accept();
        System.out.println("Connected.");
    }

     public static void main(String[] args) {
             int portNumber = 9999;
             try {
                Server serverSocket = new Server(portNumber);
                 serverSocket.run();
             }
             catch(IOException e){
                 e.printStackTrace();
             }
         }
    }

然后我的客戶程序:

public class Client {
    private int portNumber;
    private String host;
    Socket clientSocket;


    public Client(int portNumber,String host){
        this.portNumber=portNumber;
        this.host=host;
    }

    public void connect() throws IOException, UnknownHostException {
        System.out.println("Connecting to port "+portNumber);
        clientSocket = new Socket(host,portNumber);
        System.out.println("Connected");
    }
public static void main(String arg[]){
            Client clientSocket = new Client(9999,"host");
            try {
                clientSocket.connect();
            }
            catch(UnknownHostException e){
                System.err.println("Can't connect to host");
            }
            catch (IOException e) {
                System.err.println("Can't connet. "+e.getMessage());

            }

        }
    }

當我運行客戶端程序時,拋出UnknownHostException

我以為我很仔細地閱讀了本教程,但是我不知道我的代碼有什么問題。

我猜想它與我的connect()方法有關,因為那是引發異常的地方,但是我不能肯定地說。

有任何想法嗎?

在你的代碼

Client clientSocket = new Client(9999,"host");

您可以更改並運行到

Client clientSocket = new Client(9999,"localhost");

您的代碼正在尋找一個名為“主機”的主機。 要么給它主機的IP地址。 如果要使用上面定義的變量主機,請使用

Client clientSocket = new Client(9999,host);

但我看不到它正在初始化的地方

暫無
暫無

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

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