我应该使用什么端口号?

What port number shall I use?

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

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

那么,我如何决定使用哪个端口号?它应该是一个硬编码的端口号,例如 49500 吗?如果本机上另一个不相关的应用程序恰好使用了这个端口号怎么办?或者我应该获取所有已用端口的列表并以编程方式选择一个未使用的端口吗?

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

0 到 1023 之间的端口通常是受控制的,你应该为你的套接字分配更高的端口号,尽管在这个范围内的 1024 和 49151 之间的端口可以注册以通知其他人而不是使用它们。
如果你想避免冲突,你可以在你的机器上看到已注册的端口,并为你的套接字分配一个端口号,该端口号是空的,但高于该端口(49152 到 65535)的端口是完全免费的,甚至没有注册。
通常,担心这一点并不常见。例如,VMware 和 apache 网络服务器等两个主要应用程序在相同的端口号 (443) 上运行,如果你想使用 VMware workstation 和 Xampp(与 apache 一起工作),你必须简单地制作其中之一在另一个端口上收听,这没什么大不了的。所以在我看来,最好的做法是让你的用户通过配置文件或类似的东西来改变它。
更多信息,您可以搜索google。例如这个 link 可能有用:
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.