VMware主机和来宾之间的Python UDP和TCP通信不起作用

2024-04-19 22:11:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是带有windows7主机和Ubuntu客户机的VMWare工作站。我试图用UDP或TCP在两者之间进行通信——但都没有成功。我把我的虚拟机设置为桥接网络模式,这就给了它自己的IP地址。我有最基本的TCP/UDP服务器和客户机代码,来自我测试过的任何示例站点,如果我在主机上运行这两个代码,它们都可以正常工作。但是,当我在虚拟机上有客户机或服务器时,通信就不能通过。在

为了弄清楚到底发生了什么,我在主机上运行UDP服务器,在主机上运行Wireshark,并将其过滤为UDP;然后我尝试从客户机上发送一个数据包,在Wireshark中,我可以看到数据包正在通过,但服务器似乎不想接收它。有什么想法吗?在

UDP服务器:

import socket
import sys

# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# Bind the socket to the port
server_address = ('0.0.0.0', 10000)
print >>sys.stderr, 'starting up on %s port %s' % server_address
sock.bind(server_address)

while True:
    print >>sys.stderr, '\nwaiting to receive message'
    data, address = sock.recvfrom(4096)

    print >>sys.stderr, 'received %s bytes from %s' % (len(data), address)
    print >>sys.stderr, data

    if data:
        sent = sock.sendto(data, address)
        print >>sys.stderr, 'sent %s bytes back to %s' % (sent, address)

UDP客户端:

^{pr2}$

在wireshark中,我可以看到从VM客户端发送的数据包:

Src=192.168.100.42夏令时=192.168.100.38协议=UDP


Tags: to服务器data客户机serveraddressstderrsys
1条回答
网友
1楼 · 发布于 2024-04-19 22:11:11
server_address = ('127.0.0.1', 10000)
print >>sys.stderr, 'starting up on %s port %s' % server_address
sock.bind(server_address)

告诉套接字侦听地址为127.0.0.1:10000的包,但传入的包转到192.168.100.37:10000。试试看

^{pr2}$

相关问题 更多 >