那里有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