java accept方法_java – ServerSocket accept()方法

谁知道当我使用ServerSocket类的accept方法时如何选择端口?是否可以为方法可以选择的端口定义范围?我可以按顺序逐个接收端口吗?

ServerSocket sSocket = new ServerSocket(5050);

Socket socket = sSocket.accept();

解决方法:

该图表不正确(并列在O’Reilly网站上的unconfirmed errata中).

客户端随机选择其端口(您不需要在Java中执行任何特殊操作)并在您指定的任何端口上连接到服务器.使用netstat命令行工具,您可以看到这一点.

首先,只是没有客户端的侦听服务器套接字:

simon@lucifer:~$netstat -n -a

Active Internet connections (including servers)

Proto Recv-Q Send-Q Local Address Foreign Address (state)

...

tcp46 0 0 *.5050 *.* LISTEN

...

(还有很多其他条目,我刚刚删除了不相关的条目)

现在有一个客户端从localhost(127.0.0.1)连接:

simon@lucifer:~$netstat -n -a

Active Internet connections (including servers)

Proto Recv-Q Send-Q Local Address Foreign Address (state)

...

tcp4 0 0 127.0.0.1.64895 127.0.0.1.5050 ESTABLISHED

tcp4 0 0 127.0.0.1.5050 127.0.0.1.64895 ESTABLISHED

tcp46 0 0 *.5050 *.* LISTEN

...

由于客户端从同一台机器连接,我们看到两个已建立的连接 – 一个从客户端到服务器(1),另一个从服务器到客户端(2).它们具有相反的本地和外部地址(因为它们彼此交谈)并且您可以看到服务器仍在使用端口5050,而原始服务器套接字(3)继续在同一端口上侦听.

(此输出来自Mac,但Windows / Linux也有netstat给出类似的输出)

标签:java

来源: https://codeday.me/bug/20191004/1853649.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值