python-2.7 - Python 2.7 TCP 服务器与 Docker 中部署的动态 IP
问题描述
我有一个监听客户端请求的 TCP 服务器。在本地环境中运行和执行请求时,它可以正常工作。
服务器使用 Docker 部署在 Azure 容器实例中。我一直在进行故障排除,并且socket.accept()
在 Docker 映像(本地和 Azure)中运行时返回 None 对象。
def __init__(self, ip_address, port):
self.ipAddress = ip_address
self.port = port
self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server_socket.bind((self.ipAddress, self.port))
self.server_socket.listen(1)
self.secure_socket = None
self.worker = None
def connect(self):
print("client connection before accept" )
(client_connection, client_address) = self.server_socket.accept()
在服务器本地运行 IP 为 0.0.0.0 的服务器,允许客户端连接到服务器 0.0.0.0:port。但是,当我在案卷中运行此方法时,该accept()
方法没有返回套接字,我认为问题与 IP 地址有关。
如果客户端托管在 localhost 中,但 docker 在本地 Docker 上运行,我看到客户端“命中”服务器引发异常,但从未创建有效套接字。
我面临的最大问题是在 Azure 容器实例中部署它,因为这个服务会给我一个动态 IP,我不想为这个项目创建一个静态 IP。
解决方案
推荐阅读
- laravel - 数据库不适用于克隆的 laravel 项目
- javascript - Chart.js 无法重新设置数据
- ruby-on-rails - 在 Rails 中从 Minitest 切换到 RSpec 时,如何让 `rails test`(或 `rake test`)运行 RSpec 测试?
- sql-server - 如何使用聚合查询结果作为另一个查询中的列,该查询使用 SQL Server 中的存储过程进行连接
- selenium - 当元素没有任何属性时如何创建xpath定位器
- java - 为什么“找不到 android.support.design.widget.TextInputLayout”?
- shell - 我得到一个二维数组,但不能在 shell 中使用它
- javascript - 带有验证作者的 Model.findByIdAndUpdate()
- sockets - 为什么这个使用 BPF 和 RAW SOCKET 的程序会挂起?
- c++ - 重载函数内部的函数重载