我对python和计算机网络完全是新手。在进行Uni项目时,我遇到了一个问题。我做错什么了?任何帮助我都将不胜感激。你知道吗
这里是服务器端:
import socket
def Main():
host = "127.0.0.1"
port = 5000
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host, port))
print ("Server Started.")
while True:
data, addr = s.recvfrom(1024)
print ("message from: ") + str(addr)
print ("from connected user: ") + str(data.decode('utf-8'))
data = str(data).upper()
print ("sending: ") + str(data)
s.sendto(data, addr)
s.close()
if __name__ == '__main__':
Main()
这是我的客户方:
import socket
def Main():
host = "127.0.0.1"
port = 5000
server = ('127.0.0.1', 5000)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host, port))
message = input('->')
while message != 'q':
s.sendto(message.encode('utf-8'), server)
data, addr = s.recvfrom(1024)
print ('Received from server: ') + str(data)
message = input('->')
s.close()
if __name__ == '__main__' :
Main()
有几个问题;主要是印刷问题。你知道吗
您有几个
print('some text') + str(data)
的实例;这是行不通的,因为当print()
输出到屏幕(STDOUT)时,它返回None
,所以您实际做的是连接None + str(data)
你需要的是
print('some text' + str(data))
。你知道吗此外,在服务器端,您将从客户端接收到的数据回显到客户端时出现了as问题—需要将其重新编码为bytearray(它以bytearray的形式出现,转换为utf-8字符串进行显示,需要在回复之前返回bytearray)。你知道吗
总之,服务器:
以及客户:
相关问题 更多 >
编程相关推荐