// does not encode URL for you (manually include %20, etc)
java.net.URL url =
new URL("http://255.255.255.20:80/docs/books/tutorial/index.html?name=networking#DOWNLOADING");
java.net.URL url2 = new URL("http", "255.255.255.20", 80,
"/docs/books/tutorial/index.html?name=networking#DOWNLOADING");
java.net.URL url3 = new java.net.URL("https://maps.google.com/maps?q=sydney");
java.net.URL url4 = new java.net.URL("https", "maps.google.com", 80, "/maps?q=sydney");
// does encoding of URL string for you
java.net.URI uri5 = new URI("http", "example.com", "/hello world/", "");
java.net.URL url5 = uri2.toURL();
// Can then pass URL to HTMLUnit, or invoke yourself
// (see Java Network Tutorial for details):
java.net.URLConnection conn = url.openConnection();
java.net.HttpConnection httpConn = (HttpConnection)conn;
// preconnection: call setAllowUserInteraction/setDoInput/setDoOutput/
// setIfModifiedSince/setUseCaches/setRequestProperty
httpConn.connect(); // or getInputStream/getOutputStream/getContent/getHeaderField
// postconnection: call getContentEncoding/getContentLength/getContentType
// getDate/getExpiration/getLastModifed
核心java:指定inetaddress的选项(用于套接字连接) 使用ip地址
// 4 bytes:
byte[] ip4Address = {101,119,11,106};
java.net.InetAddress addressObj = java.net.InetAddress.getByAddress(ip4Address);
// or use ip6Address, 16 bytes (2001:0db8:85a3:0000:0000:8a2e:0370:7334):
// Any hex value above 0x7f must be cast to byte, because byte is signed (-128 to 127)
byte[] ip6Address = {0x20,0x01,0x0d,(byte)0xb8,(byte)0x85,(byte)0xa3,0x00,0x00,0x00,0x00,(byte)0x8a,0x2e,0x03,0x70,0x73,0x34};
3条答案
按热度按时间iyzzxitl1#
在java中,必须将套接字绑定到要使用的nic的本地ip地址。如果使用0.0.0.0,它将绑定到所有。它只使用你想要的。
olmpazwi2#
有两种方法。
在java中,关键点是在调用httpconnection#open()方法之前指定要使用的源地址:
inetaddress favorateaddr=inetaddress(字节[]{1,2,3,4});//1.2.3.4是要使用的nic的ip地址
yourhttpconnobj.setlocaladdress(favorateAddr);
//然后打开http连接yourtpconnobj.open();
在linux中,由第3层utils决定谁将选择nic的路由。因此,您需要使用目标地址自定义路由表,以强制连接从哪个nic开始。它非常简单,只是一个路由命令。查看此链接。
mpbci0fu3#
我想指定哪个接口应该用于http连接。
每个网络接口都有自己唯一的ip地址。通过连接到接口ip地址上的端口,可以绑定到接口。
我没有插座。我正在给它一个网址。
是否使用插座(通过
Socket
/InetAddress
)或http连接(通过URL
),使用相同的方法-绑定到ip地址+端口。确定哪个接口有哪个地址
使用linux命令:
使用java(
java.net.NetworkInterface
类别):html单位:指定ip地址和端口
如果你在调用
HTMLUnit
的WebClient
,例如:然后可以执行以下任一操作:
你也可以使用
HTMLUnit
HttpWebConnection
:核心java:为http连接指定url的选项
创建一个连接到资源(文件、网页等)的url。您可以使用主机字符串(自动dns查找)或ip地址指定url。您可以选择添加端口:
核心java:指定inetaddress的选项(用于套接字连接)
使用ip地址
使用url字符串(dns查找)