You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java.net.UnknownHostException求助:创建Socket时域名解析失败如何解决?

解决Java Socket创建时的UnknownHostException问题

哈哈这个坑我刚入门Java网络编程的时候也踩过!你遇到的java.net.UnknownHostException完全是因为主机名里多了http://前缀——Java的Socket构造方法(包括InetAddress.getByName())只需要纯主机名或IP地址,根本不需要加协议头。

为啥会报错?

InetAddress.getByName()是用来解析域名或IP地址的方法,它不认http://这种协议标识。你把http://google.com整个字符串丢进去,它会把这串内容当成一个完整的主机名去DNS查询,自然找不到对应的主机,所以抛出异常。

正确的写法

直接去掉http://前缀,用纯域名即可:

方式1:通过InetAddress创建

Socket socket = new Socket(InetAddress.getByName("google.com"), 80);

方式2:直接传入域名和端口(更简洁)

Socket socket = new Socket("google.com", 80);

额外小提示

  • 如果是要建立HTTPS连接,记得把端口改成443
  • 网络操作必须处理IOException,建议用try-catch包裹:
try {
    Socket socket = new Socket("google.com", 80);
    // 这里可以添加Socket的读写逻辑
    // ...
    socket.close(); // 用完记得关闭Socket
} catch (IOException e) {
    e.printStackTrace();
}

内容的提问来源于stack exchange,提问作者hhrzc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:35:01