Java Socket 构造函数,Socket(String hostName, int port),挂起

Chr*_*ris 4 java sockets linux ubuntu

我正在尝试制作一个简单的客户端/服务器程序。我打开了一个 ServerSocket,但似乎无法使用我创建的客户端套接字连接到它。

我一直在寻找答案有一段时间了 - 坦率地说,我不确定要针对这个问题搜索什么。

这是客户端代码:

import java.io.*;
import java.net.*;

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

Socket s = null;


try{
    System.out.println("connecting to host...");
    s = new Socket("dagobah", 6464);
}catch (UnknownHostException e) {
    System.err.println("Can't connect");
    System.exit(1);
}
System.out.println("Connected to host");


s.close();
}
Run Code Online (Sandbox Code Playgroud)

}

这是服务器代码:

import java.net.*;
import java.io.*;
import java.util.*;


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


ServerSocket serverSocket = null;
try{
    serverSocket = new ServerSocket(6464);
}catch (IOException e){
    System.err.println("fail to start server");
    System.exit(1);
}
System.out.println("Server started : )");



Socket clientSocket = null;
try{
    System.out.println("waiting for a client...");
    clientSocket = serverSocket.accept();
} catch (IOException e) {
    System.out.println("fail can't accept client connection");
    System.exit(-1);
}
System.out.println("client connected");


clientSocket.close();
serverSocket.close();
}
Run Code Online (Sandbox Code Playgroud)

}

客户端永远不会超过 try 块

客户端输出:连接到主机...

服务器输出:服务器启动:) 等待客户端...

自从发布这个问题以来,我了解到这是我的计算机特有的问题。我正在运行 Linux 2.6.38-11-generic x86_64 GNU/Linux Ubuntu Natty

任何和所有的帮助将不胜感激!:)

Jon*_*oni 5

Socket构造实际上并没有连接,但它并尝试将主机名解析为IP地址。看起来在这种情况下名称解析需要很长时间,最终会超时,抛出一个UnknownHostException. 我听说这在 Windows 上可能需要几分钟。

是如何dagobah解析的,通过 DNS 还是?尝试使用 IP 地址而不是名称。


Joh*_*ohn 5

Socket 构造函数有问题。检查您尝试解析dagobahIP 地址的方式。使用localhost或尝试您的代码127.0.0.1

我试过了,效果很好。