如何从python服务器向python客户机提供端口号

如何从python服务器向python客户机提供端口号,python,network-programming,client-server,port,server,Python,Network Programming,Client Server,Port,Server,我正在尝试构建一个简单的python服务器,客户端可以连接到该服务器,而不必知道确切的端口号。这可能吗?其思想是选择一个随机端口号,并将其用于客户端连接 我知道您可以使用bind(主机,0)获取随机端口号,并在服务器中使用socket.getsockname()[1]获取我的端口号。但是我的客户怎么能得到端口号呢 我已经尝试过socket.getnameinfo(),但我不知道该方法是如何工作的 为此,服务器必须侦听特定端口。 这意味着客户端需要在这些端口上与其进行交互 所以。。。不,在一些随机

我正在尝试构建一个简单的python服务器,客户端可以连接到该服务器,而不必知道确切的端口号。这可能吗?其思想是选择一个随机端口号,并将其用于客户端连接

我知道您可以使用bind(主机,0)获取随机端口号,并在服务器中使用socket.getsockname()[1]获取我的端口号。但是我的客户怎么能得到端口号呢


我已经尝试过socket.getnameinfo(),但我不知道该方法是如何工作的

为此,服务器必须侦听特定端口。 这意味着客户端需要在这些端口上与其进行交互


所以。。。不,在一些随机未知端口上不可能这样做。

您需要以某种方式公布端口号。虽然DNS不能做到这一点(好吧,您可能可以在服务器对象上编造一些资源记录,但实际上并没有做到),但有许多网络服务可以做到这一点。像active directory这样的LDAP(您需要写权限)、DNS-SD DNS服务发现、通用即插即用、服务位置协议,所有这些都会浮现在脑海中。您甚至可以在某个网页的某个位置记录端口号,并让客户端读取它。

看看Zeroconf,它似乎是您试图到达的路径

但这不是随机的…客户端希望随机连接port@c0deMonk3y-客户端未连接到随机端口。服务器随机选择一个端口,然后播发它。客户端读取广告并专门连接到服务器提供的一个端口。这很可能是它的传统工作方式。但是OP询问了一个客户端,该客户端不知道服务器侦听哪个端口。@c0deMonk3y-是的,你说得很对。OP询问“但是我的客户机如何获得端口号”,我的回答是服务器通过许多网络服务解析程序中的一个来公布端口号,这些网络服务解析程序可以做这样的事情。我不知道你所说的“传统上如何运作”是什么意思。