【问题标题】:What port number shall I use?我应该使用什么端口号?
【发布时间】:2021-04-30 12:50:30
【问题描述】:

我正在编写一个要在 Windows PC 上运行的应用程序。我需要创建一个监听 127.0.0.1 的服务器套接字,以及另一个与该服务器套接字连接的客户端套接字。

由于两个套接字之间的数据交换是在同一台机器内,并且没有客户端从机器外部连接,所以使用什么端口无关紧要,只要两个套接字使用相同的端口号。

那么,我如何决定使用哪个端口号?应该是硬编码的端口号,比如 49500?如果这台机器上的另一个不相关的应用程序碰巧使用了这个端口号怎么办?还是我应该获取所有已使用端口的列表并以编程方式选择一个未使用的端口?

只想知道什么是最好的方法。谢谢。

【问题讨论】:

    标签: tcpsocket


    【解决方案1】:

    通常控制 0 到 1023 内的端口,您应该为您的套接字分配更高的端口号,尽管在该范围内可以注册 1024 和 49151 内的端口,以便其他人了解这一点而不使用它们。
    如果您想避免冲突,您可以在您的机器上看到已注册的端口,并为您的套接字分配一个端口号,该端口号为空,但高于该端口(49152 到 65535)的端口是完全免费的,甚至没有注册。
    一般来说,担心这一点并不常见。例如,像 VMware 和 apache Web 服务器这样的两个主要应用程序在同一个端口号 (443) 上运行,如果您想使用 VMware 工作站和 Xampp(与 apache 一起使用),您必须简单地让其中一个监听另一个端口这没什么大不了的。所以在我看来,最好的做法是让你的用户通过配置文件或类似的东西来改变它。
    更多信息,您可以搜索谷歌。例如,此链接可能有用:
    https://www.sciencedirect.com/topics/computer-science/registered-port#:~:text=Well%2Dknown%20ports%E2%80%94Ports%20in,1023%20are%20assigned%20and%20controlled.&text=Registered%20ports%E2%80%94Ports%20in%20the,be%20registered%20to%20prevent%20duplication.&text=Dynamic%20ports%E2%80%94Ports%20in%20the,assigned%2C%20controlled%2C%20or%20registered.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-24
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      • 2013-08-26
      • 2010-12-13
      相关资源
      最近更新 更多