首页 > 解决方案 > Python socket IPC - 端口号轮盘赌

问题描述

请原谅我对套接字/网络的所有事情一无所知,这对我来说是一个相对较新的领域。我正在尝试在同一台机器上运行的两个 python 应用程序之间完成一些进程间通信。使用该模块似乎很简单,socket到目前为止,我已经能够使用以下文章很好地实现这一点:Python 中的基本套接字编程。这允许我使用我的本地地址并指定端口号以在进程之间进行通信。但是,如果另一个进程已经在使用相同的端口号会怎样?换句话说,不能保证我任意选择的端口号尚未使用,从而破坏了我的代码。

所以我的问题是:有没有办法确保我在服务/连接套接字时使用唯一的端口/地址组合?我可以使用不只是主机名的地址吗?(当我尝试这个时,我得到了一个socket.gaierror)。

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = (socket.gethostbyname(socket.gethostname()), 12345) # what can we do here to use something more unique than the host ip address?
sock.bind(server_address)

标签: pythonsockets

解决方案


推荐阅读