使用 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