我是网络编程的完整入门者。我有一个作业要我做;
CLIENT提示用户输入字符串S。 然后,客户端将假定长度为n的字符串S拆分为两个字符串S1和S2(如果n为偶数,则长度为n / 2),或者长度为(n + 1)/ 2和(n-1)如果n为奇数,则分别为/ 2。 客户然后: 1.通过两个不同的UDP数据包将S1和S2发送到服务器; 2.在另一个UDP数据包中等待来自服务器的字符串R; 3,检查R是否等于S2和S1的串联; 4.向用户显示最终测试的结果。
SERVER不断等待UDP消息。 服务器等待包含字符串S1和S2的两个不同的UDP消息的序列。 服务器然后: 1.在两个不同的UDP数据包中接收S1,然后接收S2; 2.将R构造为S2,然后是S1的串联; 3.将R作为UDP数据包发送给客户端; 4.重新开始。
import socket
import sys
HOST = "localhost"
PORT = 9999
s = input("Enter a string S: ")
n = len(s)
if (n%2) == 0:
s1 = s[:(n//2)]
s2 = s[(n//2):]
print("String s1 is: "+s1)
print("String s2 is: "+s2)
else:
s1 = s[:(n + 1)//2]
s2 = s[(n + 1)//2:]
print("String s1 is: "+s1)
print("String s2 is: "+s2)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(s1.encode() ,(HOST, PORT))
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(s2.encode() ,(HOST, PORT))
received = sock.recv(1024)
received.decode()
if received == s2 + s1:
print("Sent: "+ s2 + s1)
print("Received: "+received)
sock.close()
-------------------------------------------------------------------
import socketserver
class MyUDPHandler(socketserver.DatagramRequestHandler):
def handle(self):
data1 = self.request[0]
data2 = self.request[0]
print("Wrote :")
print(data1.decode())
print(data2.decode())
result = data2 + data 1
self.request[1].sendto(result, self.client_address)
if __name__ == "__main__":
HOST, PORT = "localhost", 9999
server = socketserver.UDPServer((HOST, PORT), MyUDPHandler)
server.serve_forever()
该代码无法正常工作。它不会给我s2 + s1。它仅设法正确分割字符串S。我不知道怎么了。任何帮助都非常感谢。