【发布时间】:2015-07-31 15:29:41
【问题描述】:
我目前正在像这样启动一个 Tcl 套接字服务器:
socket -server Server 0
这让操作系统选择一个可用端口开始监听。问题是我不希望它选择 1025 到 64k 之间的任何端口,而是想知道我是否可以指定一个端口范围?像这样的:
socket -server Server 40000-41000
然后操作系统会选择一个介于 40000 和 41000 之间的可用端口供服务器监听。有没有办法做到这一点?我在 Tcl API 中找不到它,但是否有一些不错的 API 调用方式来做到这一点,而不是遍历端口范围直到找到可用端口?
【问题讨论】:
-
为什么你需要一个客户端不可能发现的端口上的服务器?只需创建您的服务器并确保它应该操作的端口是通过命令行参数或其他一些数据驱动机制传递的。这样我认为你有足够的灵活性。
-
服务器端口是通过另一种机制得知的。我理解你的困惑——通常像 SSH 或 SMTP 或数据库之类的东西都存在于众所周知的端口上。这种通过
0获取可用端口的机制适用于根据需要创建的动态服务器,其中许多服务器可能在同一台机器上运行,因此它们不能共享同一个端口。