我在erlang中编写了一个服务器应用程序,在C#中编写了一个客户端 它们通过3个TCP端口进行通信.端口号是硬编码的.现在我想动态地这样做.这是我第一次进行网络编程,所以请原谅我无法使用正确的术语:-D
我想做的是让一个主管接受来自客户端在先前已知端口(例如,10000或其他)上的TCP连接,然后找到3个空闲端口,在这3个端口上启动服务器应用程序并告诉客户端那些端口号,以便客户端可以连接到服务器.
我的特殊问题是:如何找到3个未使用的端口?(澄清:用哪个模块:fun()来查找自由端口?)
我的一般问题是:我确定这种东西(一个服务器分配端口和重定向客户端)是相当常见的网络编程问题,应该有一堆(特定于erlang或一般)资源,但我只是不要没有谷歌的术语.
Cha*_*ieP 13
根据此处的Erlang文档,如果gen_tcp:listen/2函数的Port参数为0,则OS将为套接字分配任何可用端口.然后可以使用inet:port/1来检索后者.
你可以这样做:
{ok, Listen} = gen_tcp:listen(0, [Options]),
Port = inet:port(Listen).
Run Code Online (Sandbox Code Playgroud)