Java:客户端可能两次在远程计算机上使用相同的端口吗?

时间:2013-07-17 09:55:29

标签: java sockets tcp serversocket

让我澄清一下这个问题。

请参阅digram Digram

是否可以同时连接所有四个插座进行此类连接!

ServerSocket是来自java.net API的ServerSocket 正常套接字是来自java.net Api的套接字

是的,ServerSocket是指在建立连接后从ServerSocket.accept返回的套接字

3 个答案:

答案 0 :(得分:3)

你试过吗?

是的,可以通过IP地址和端口一起定义一个通信端。由于两台服务器都有不同的IP地址,因此没有问题。

还想过上网吗?几乎所有的Web服务器都在端口80上运行,它运行正常。

答案 1 :(得分:2)

当然,为什么不呢?你的问题甚至不需要它的反向部分,其中两个对等体都是服务器而且都是客户端。服务器可以在同一端口上接受任意数量的连接。关于它,真的没有别的可言。

答案 2 :(得分:0)

Socket是(src ipAddr / port& dest ipAddr / port)的组合。这构成了一个独特的套接字,在给定的时间点,只有一个套接字可以存在于机器上。

正如@EJP指出的那样,是的,它没有任何区别。对于机器,绑定到端口以侦听/发送数据不依赖于其他机器。端口号始终与其自己的机器相关。 端口号范围为0到65535(2个字节)。 0-1024保留给知名端口。因此,在为Listening Socket选择端口号时,请选择一个端口> 1024。

我建议您在使用Java或其他任何语言进行Socket Connections编程之前,先了解一下套接字和端口。

请参阅“http://i.stack.imgur.com/Ly54C.png”。修改了图(寻找绿色框)。每当机器(机器B)尝试连接到远程机器(机器A)到特定的目标端口时,OS就会在同一台机器上选择一个随机源端口(机器B)