开发者社区> 问答> 正文

java如何侦听超过65535的端口?报错

代码如下:

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命令实际测试,的确已经打开了。

因此才会有这个疑问,希望大家赐教。

展开
收起
爱吃鱼的程序员 2020-06-14 18:46:45 602 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    这是操作系统的限制啊!

    TCP协议已经规定了端口号是2个字节也就是16位。那么最大的范围就是0-65535。


    http://www.baike.com/wiki/TCP

    http://www.faqs.org/rfcs/rfc793.html

    谢谢你的解答。
    2020-06-14 18:47:01
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载