当前位置: 首页 > 知识库问答 >
问题:

为什么ServerSocket提供的套接字使用不同的端口?

柯甫
2023-03-14

服务器:

int port = 7000
ServerSocket ss;
..
System.out.println("Listening on " + ss.getInetAddress() + ":"
   + ss.getLocalPort());

Socket s = ss.accept();
..
System.out.println("Accepted connection " + s.getInetAddress() + ":"
   + s.getPort());

客户:

Socket s;
..
System.out.println("Connected to " + s.getInetAddress() + ":"
   + s.getPort());

服务器开始侦听:

侦听0.0.0.0/0.0.0.0:7000

每个客户端连接将获得一个单独的套接字进行通信,所有的套接字都使用相同的服务器端TCP端口进行通信。

共有1个答案

魏毅
2023-03-14

getPort()返回套接字的远程端口(即另一端地址),而getLocalPort()返回套接字绑定到的本地端口。

如果在服务器接受的套接字上运行s.getLocalPort());,也会得到7000

 类似资料:
  • 为了防止实现细节泄漏,可以实现,而不是返回,然后需要从接口实现。因此,无论内部数据结构如何管理,对元素的访问都是通过进行的。 对于Java8,可能希望将添加到。(另请参阅《Java8lambdas》一书中关于支持的建议)。虽然添加方法并不困难(我也读过关于为什么Iterable不提供流的问题),但奇怪的是Java没有为添加接口来镜像思想。(好吧,可能有一个不同的名称,因为是为了永远使用CORBA的

  • 客户端IP:客户端端口和服务器IP:服务器端口->协议(以区分TCP和UDP) 那么为什么accept()需要返回绑定到不同端口的套接字呢?每个报头中发送的四组信息是否足以区分来自不同机器的到同一服务器端口的多个连接,从而不需要使用服务器机器上的不同端口进行通信?

  • 我有一个Nodejs server.js代码: 我有一个带有java脚本的代码: 在中,我有: 当我在浏览器上打开时,这种方式运行良好。

  • 在Java建立TCP连接时,需要创建套接字。我使用下面的构造函数来创建套接字。公共套接字(InetAddress address,int port,InetAddress localAddr,int localPort)抛出IOException 根据Java API,localAddress应该是有效的InetAddress或null。当我提供作为本地地址时,在本地计算机(如和远程计算机)上建立

  • 问题内容: 我知道Set中只允许根据.equals()的任何对象的一个​​实例,并且如果您已经有一个等效的对象,则不应“需要”从Set中获取一个对象,但是我仍然想有一个.get()方法,该方法返回给定等效对象作为参数的Set中对象的实际实例(或null)。 关于为什么这样设计的任何想法/理论? 我通常必须通过使用Map并使其键和值相同或类似的方法来解决这个问题。 编辑:到目前为止,我认为人们还不了

  • 我在 C#.net 中使用 UDP 异步套接字,我想让服务器和客户端在不同的端口进行通信以进行发送和接收, 服务器使用端口 A 发送到客户端,从具有端口 B 的客户端接收 客户端从具有端口 A 的服务器接收数据,并将数据发送到具有端口 B 的服务器 可能吗??