ServerSocket.accept() 返回的 Java 客户端套接字

标签 java sockets networking tcp port

这更像是一个一般的套接字问题。在 Java 中,如果我有一个绑定(bind)到特定端口的 ServerSocket,比如 4444,我知道它正在监听连接请求。 accept() 方法会阻塞,直到收到连接请求并返回一个新的 Socket 以与客户端通信。返回的 Socket 的远程端点是客户端的 IP 地址和端口。

但是,让我感到困惑的是,返回的 Socket 的本地端口与正在监听请求的 ServerSocket 的端口号相同(在本例中为 4444)。我以为两个套接字不能绑定(bind)到同一个端口?返回的 Socket 不会是服务器上的另一个端口吗?

最佳答案

两个ServerSockets不能监听同一个IP地址和端口。可以让两个 ServerSocket 监听不同的 IP 和相同的端口。

本地和远程的两个套接字不能具有相同的 IP 和端口。许多套接字的本地端口可以相同,前提是远程 IP 和端口不同。

关于ServerSocket.accept() 返回的 Java 客户端套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11905717/

相关文章:

java - Android:范围内的随机数

java - 如何在数组列表中显示之前过滤 SQLite 数据库的结果?

java - 如何在 Kotlin 中实例化接口(interface)?

python - Pygame无法使用套接字

python - 如何在不使用循环的情况下将 IPv4 地址从字节转换为字符串?

linux - crontab - sh : ip command not found

c - 通过无线连接的两台计算机之间的信息交换

java - 为什么我在规范记录查询响应中得到错误的 MQIACF_OBJECT_TYPE 值?

java - ReadableByteChannel.read()为什么会出现IOExceptions

networking - 在 Windows 中运行 "ipconfig/release"以执行 DHCP