谁知道当我使用ServerSocket类的accept方法时如何选择端口?是否可以为方法可以选择的端口定义范围?我可以按顺序逐个接收端口吗?
ServerSocket sSocket = new ServerSocket(5050);
Socket socket = sSocket.accept();
Run Code Online (Sandbox Code Playgroud)

Sim*_*onJ 23
该图表不正确(并列在O'Reilly网站上未经证实的勘误表中).
该客户选择它的端口随机(你不需要做任何事情在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 ...
(还有很多其他条目,我刚刚删除了不相关的条目)
现在有1个客户端从本地主机(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 <- 1 tcp4 0 0 127.0.0.1.5050 127.0.0.1.64895 ESTABLISHED <- 2 tcp46 0 0 *.5050 *.* LISTEN <- 3 ...
由于客户端从同一台机器连接,我们看到两个已建立的连接 - 一个从客户端到服务器(1),另一个从服务器到客户端(2).它们具有相反的本地和外部地址(因为它们彼此交谈)并且您可以看到服务器端仍在使用端口5050,而原始服务器套接字(3)继续在同一端口上侦听.
(这些来自Mac,但Windows/Linux也netstat提供类似的输出)
| 归档时间: |
|
| 查看次数: |
46125 次 |
| 最近记录: |