我正在Java中运行套接字编程,如下图所示,这使得我的localhost和google.com之间发生套接字连接,但遇到以下错误。我不确定代码中有什么问题。从本地主机到Google.com构建套接字时出现错误
If I am using LocalHost address as
String x = Inet4Address.getLocalHost().getHostAddress().toString();
then its running fine.
//code
public class SocketConnection {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SocketConnection tl= new SocketConnection();
tl.connect();
}
public void connect()
{
try {
String x = Inet4Address.getLoopbackAddress().getHostAddress().toString();
InetAddress addr = InetAddress.getByName(x);
System.out.println(addr);
Socket socket = new Socket("www.google.com", 80, addr , 59645);
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
该错误消息是
/127.0.0.1
java.net.NoRouteToHostException: Can't assign requested address
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:286)
at SocketConnection.connect(SocketConnection.java:36)
at SocketConnection.main(SocketConnection.java:22)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
我在我的服务器和20个其他客户端之间建立了一个套接字连接,这两个客户端都位于我的笔记本电脑上(可以认为是多客户端服务器),我试图让所有的客户端在端口80上连接到谷歌服务器来自服务器的消息。来自服务器的消息将全部连接 - google.com,80。当我在我的服务器和客户端之间建立了一个套接字连接时,它向所有具有不同端口号的客户端提供了127.0.0.1的IP地址。这就是为什么我尝试使用分配的端口号使用本地主机IP地址。 –
@AnuvratTiku由于您通过该地址将客户端连接到服务器,因此您的服务器向客户端提供了地址“127.0.0.1”。你仍然无法从127.0.0连接。1'到电脑以外的任何地方。 – Malt