【问题标题】:Allowed Port Range for TCPTCP 允许的端口范围
【发布时间】:2012-10-15 05:21:46
【问题描述】:

我正在尝试为 TCP 连接生成一个随机端口号。 From :http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers 我知道1024到49151的端口范围是不保留的,但是有一些是UDP的,如何只生成有效的TCP端口号?

【问题讨论】:

  • 对于 TCP 客户端来说,1024 以上的所有内容都可以。如果您需要在 wikipedia 页面上看到一个条目以使其成为“可接受的”TCP 端口,那么您考虑的太多了。客户端套接字源端口可接受所有 TCP 端口 =

标签: java tcp


【解决方案1】:

如果您绑定到端口 0,操作系统将选择一个有效的、未使用的端口。

如果您需要随机而不是任意,则 49152–65535 之间的任何内容都应该可以安全地自动使用,因此只需在该范围内选择一个随机数。 (但是,如果该端口正在使用中,您可能需要重试。)

【讨论】:

  • 那么该范围内的任何端口都支持 TCP 吗?因为从 wiki 页面中,某些端口仅标记为 UDP。另外,如果端口正在使用中,我将如何检查 java?谢谢!
  • 1-65535的所有端口都支持TCP,该页列出的TCP/UDP是指注册的端口;也就是说,分配给特定用途的端口。检查端口是否正在使用通常只是通过尝试绑定到它来完成,如果您收到有关端口正在使用的错误,那么它就是。如果你得到什么端口并不重要,只要你得到一个,那么你应该绑定端口 0,然后从你的新套接字上获取本地端口以找出你得到了什么。
  • 详细说明一下,您的本地服务器绑定到特定端口,但 UDP 和 TCP 位于不同的“命名空间”中,因此是独立的。使用 both 的服务器通常会为两者打开相同的端口号。 连接由协议、本地地址、本地端口、远程地址、远程端口的 5 元组定义,这解释了为什么你不会得到串扰等。跨度>
猜你喜欢
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 2013-12-30
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
相关资源
最近更新 更多