3方式节点连接UDP Python编程错误



那里有3个python代码文件,a,b和c。

a向B和B发送消息接收并将其转发给C,接收并打印出来。他们中的所有三个都使用UDP协议。我知道我只需要更改几行,但我似乎无法弄清楚。

b不绑定到A,A将消息直接发送到C。我会出现主机错误,因为我有将它们连接在一起的问题。

注意,只是B部分需要更改,但我包括了A和C部分以供参考。

部分A:

import socket
import sys
if len(sys.argv) != 3:
    print("Useage: python " + sys.argv[0] + " <ip> <listen port>")
    sys.exit(-1)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
    print("Input text:")
    text = sys.stdin.readline().strip()
    s.sendto(text,(sys.argv[1],int(sys.argv[2])))
    if text == "bye":
        break

B部分:

import socket
import sys
if len(sys.argv) != 2:
    print("Useage: python " + sys.argv[0] + " <listen port>")
    sys.exit(-1)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("0.0.0.0", int(sys.argv[1])))
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("0.0.0.0", int(sys.argv[1])))
print("Waiting..")
while True:
    data, addr = s.recvfrom(1024)
    s.sendto(data,(sys.argv[1],int(sys.argv[2])))
    if data == "bye":
        break

c部分:

import socket
import sys
if len(sys.argv) != 2:
    print("Useage: python " + sys.argv[0] + " <listen port>")
    sys.exit(-1)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("0.0.0.0", int(sys.argv[1])))
print("Waiting..")
while True:
    data, addr = s.recvfrom(1024)
    data = data.decode("utf-8").replace("","")
    print data
    if data == "bye":
        break

我找到了答案,必须包括B代码的IP地址,将其绑定到A,如下面的代码所示。

import socket
import sys
if len(sys.argv) != 3:
    print("Useage: python " + sys.argv[0] + " <liseten port>")
    sys.exit(-1)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("0.0.0.0", int(sys.argv[1])))
print("Waiting..")
while True:
    data, addr = s.recvfrom(1024)
    s.sendto(data,("127.0.0.1",int(sys.argv[2])))
    if data.decode("utf-8") == "bye":
        break

相关内容

最新更新