使用 Python 在 2 个虚拟机之间建立 TCP 套接字连接
Establishing TCP socket connection between 2 VMs using Python
我运行宁 2 台虚拟机作为客户端-服务器。
一个 VM 是 Windows[Client],另一个 VM 是 CentOS[Server]。
我写了一个程序[python]来在它们之间创建 TCP 连接。
当我运行在同一台机器[服务器作为本地主机]上连接客户端和服务器代码时,脚本工作正常,我可以看到正在建立的 TCP 连接。但是当我 运行 脚本分开时 [windows 上的客户端脚本和 CentOS 上的服务器脚本] 没有建立 TCP 连接。
不过,两个 VM 都可以相互 ping 通。
有什么我遗漏的吗?
以下是客户端脚本。当我将服务器名称从“本地主机”更改为服务器 IP 时,没有建立连接。
# Client Side Script
from socket import *
server_name = 'localhost' #DOES NOT WORK WHEN REPLACED WITH SERVER IP
server_port = 7000
client_socket = socket(AF_INET, SOCK_STREAM)
client_socket.connect((server_name,server_port))
while True:
sentence = input(">> ")
client_socket.send(sentence.encode())
message = client_socket.recv(2048)
print (">> ", message.decode())
if(sentence == 'q'):
client_socket.close()
以下是我的 CentOS 服务器上的防火墙配置。如果有帮助:
user#sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: dhcpv6-client http https ssh
ports: 1234(changed)/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
以下有效。感谢您的投入。我关注了https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7
sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
我运行宁 2 台虚拟机作为客户端-服务器。
一个 VM 是 Windows[Client],另一个 VM 是 CentOS[Server]。
我写了一个程序[python]来在它们之间创建 TCP 连接。
当我运行在同一台机器[服务器作为本地主机]上连接客户端和服务器代码时,脚本工作正常,我可以看到正在建立的 TCP 连接。但是当我 运行 脚本分开时 [windows 上的客户端脚本和 CentOS 上的服务器脚本] 没有建立 TCP 连接。
不过,两个 VM 都可以相互 ping 通。
有什么我遗漏的吗?
以下是客户端脚本。当我将服务器名称从“本地主机”更改为服务器 IP 时,没有建立连接。
# Client Side Script
from socket import *
server_name = 'localhost' #DOES NOT WORK WHEN REPLACED WITH SERVER IP
server_port = 7000
client_socket = socket(AF_INET, SOCK_STREAM)
client_socket.connect((server_name,server_port))
while True:
sentence = input(">> ")
client_socket.send(sentence.encode())
message = client_socket.recv(2048)
print (">> ", message.decode())
if(sentence == 'q'):
client_socket.close()
以下是我的 CentOS 服务器上的防火墙配置。如果有帮助:
user#sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: dhcpv6-client http https ssh
ports: 1234(changed)/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
以下有效。感谢您的投入。我关注了https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7
sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp