【问题标题】:Client Socket cannot find Server Socket. Throws UnknownHostException despite having the same port number客户端套接字找不到服务器套接字。尽管具有相同的端口号,但抛出 UnknownHostException
【发布时间】:2016-01-13 08:51:33
【问题描述】:

在我真正开始使用 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() 方法有关,因为这是引发异常的地方,但我不能肯定。

有什么想法吗?

【问题讨论】:

  • 您是否尝试在同一台计算机上运行服务器时连接到“localhost”作为您的主机?否则,可能是防火墙问题。
  • 就是这样!!!我不认为名字很重要,但确实如此!现在完美运行,谢谢!

标签: java sockets server port unknown-host


【解决方案1】:

在你的代码中

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

你能不能改一下跑到

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

您的代码正在寻找名为“host”的主机。要么给它主机的IP地址。 如果你想使用上面定义的变量 host 使用

Client clientSocket = new Client(9999,host);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-05
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    相关资源
    最近更新 更多