在docker网络中,我正在尝试使用Python套接字(发送数据包)在两个容器之间通信。ping可以工作,但Python套接字库无法工作。
错误代码: 'line 6: conn, addr = sock.connect(('172.168.1.2', 4000)) TypeError: 'NoneType' object is not iterable'
首先在容器1中运行python3 receive.py。然后在容器2中运行python3 send.py。容器1打印“accepted”,然后不再输出任何内容。容器2则出现了上述错误。
此网络是一个具有自己子网和默认网关的用户定义网络。当我使用它来连接我的树莓派时,相同的代码不会发生错误,但在容器通信时会产生错误。
所有的代码:
容器1:
错误代码: 'line 6: conn, addr = sock.connect(('172.168.1.2', 4000)) TypeError: 'NoneType' object is not iterable'
首先在容器1中运行python3 receive.py。然后在容器2中运行python3 send.py。容器1打印“accepted”,然后不再输出任何内容。容器2则出现了上述错误。
此网络是一个具有自己子网和默认网关的用户定义网络。当我使用它来连接我的树莓派时,相同的代码不会发生错误,但在容器通信时会产生错误。
所有的代码:
容器1:
import socket
def receive():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("", 4000))
s.listen(2)
conn, addr = s.accept()
print("accepted")
print(bytes.decode(conn.recv(1024)))
容器 2:
import socket
def send():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
command = "bridge test!"
conn, addr = sock.connect(('172.168.1.2', 4000))
conn.sendall(command)
设置网络:
docker network create --subnet 172.168.1.0/24 testNetwork
docker network connect testNetwork container1
docker network connect testNetwork container2
我从docker inspect中获取了容器的IP地址(同时ping它们也可以),请帮忙!谢谢!