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
相关产品推荐
相关产品推荐

