我在一台宿主机中的两台虚拟机之间的udp通信过程中出现“ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。”的错误,网络设置NAT和桥接模式都用过了,但是都不行。希望各位能给我一些帮助,谢谢!
在此附上代码
发送模块:
import socket
socket.setdefaulttimeout(20)
def send(udp_socket):
dest_ip = "10.50.0.126"
dest_port = int("7878")
send_data = input("\n请输入要发送的数据:")
udp_socket.sendto(send_data.encode("utf-8"), (dest_ip, dest_port))
def recv(udp_socket):
recv_data = udp_socket.recvfrom(1024)
recv_msg = recv_data[0].decode("gbk")
print(recv_msg)
def main():
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.bind(("", 7878))
while True:
print("-" * 30)
print("1:发送信息")
print("2:接收信息")
print("0:关闭运行")
print("-" * 30)
op_num = input("请输入相应的功能模块:")
if op_num == "1":
send(udp_socket)
elif op_num == "2":
recv(udp_socket)
elif op_num == "0":
break
else:
print("输入错误,请重新输入")
if __name__ == '__main__':
main()
接收并回复模块:
import socket
socket.setdefaulttimeout(20)
def main():
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.bind(("", 7878))
recv_data = udp_socket.recvfrom(1024)
recv_ip = recv_data[1]
recv_msg = recv_data[0].decode("gbk")
msg = recv_msg[::-1]
dest_ip = recv_ip[0]
dest_port = recv_ip[1]
send_data = msg
udp_socket.sendto(send_data.encode("utf-8"), (dest_ip, dest_port))
if __name__ == '__main__':
main()