代码如下:
HttpHost host = new HttpHost("192.168.3.230", 98011 );//目标地址
报错信息如下
Exception in thread "main" java.lang.IllegalArgumentException: port out of range:98011 at java.net.InetSocketAddress.<init>(InetSocketAddress.java:83) at org.apache.http.conn.HttpInetSocketAddress.<init>(HttpInetSocketAddress.java:51) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:168) at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:304) at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:611) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:446) at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:115) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)
我查看了HttpClient的底层代码,发现了异常的信息
public InetSocketAddress(String hostname, int port) { if (port < 0 || port > 0xFFFF) { throw new IllegalArgumentException("port out of range:" + port); }
也就是说走TCP/IP协议,java socket所能侦听的端口范围是0-65535。
98011这个端口我用telnet命令实际测试,的确已经打开了。
因此才会有这个疑问,希望大家赐教。
这是操作系统的限制啊!
TCP协议已经规定了端口号是2个字节也就是16位。那么最大的范围就是0-65535。
http://www.baike.com/wiki/TCP
http://www.faqs.org/rfcs/rfc793.html
谢谢你的解答。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。