Python:UDP套接字如何等待客户端回复字节字符串
import socketserver
import struct
from collections import namedtuple
class MyUDPHandler(socketserver.BaseRequestHandler):
def handle(self):
data = self.request[0].strip()
socket = self.request[1]
if len(data) >= 34:
format_ = "6shhih50s2s"
MyStruct = namedtuple("MyStruct", "sMark nPackLen nFlag nGisIp nPort sData sEnd")
tuple_to_send = MyStruct(sMark="\r\n{}".format("*KW").encode("ascii"),
nPackLen=struct.calcsize(format_),
nFlag=0x0002,
nGisIp=0,
nPort=0,
sData= "*KW,AA05954122,015,080756,#".encode("ascii"),
sEnd="\r\n".encode("ascii"))
string_to_send = struct.pack(format_, *tuple_to_send._asdict().values())
socket.sendto(string_to_send, self.client_address)
print('waiting Reply Bytes String from client..') //how to get the reply bytes string from Client side?
if __name__ == "__main__":
HOST, PORT = "", 6903
server = socketserver.UDPServer((HOST, PORT), MyUDPHandler)
server.serve_forever()
第一步:服务器接收到GPS设备发送的字节字符串,并且会获得一个动态IP地址。
第二步:当服务器获取到客户端的动态IP地址后,服务器会向客户端(GPS设备)发送一个命令。
第三步:客户端会发送回一个字节字符串,但我不知道在这里怎么捕捉到这个回复的字节字符串。
1 个回答
1
如果服务器能回复发送者的IP地址和端口号,你就可以这样做。
print('waiting Reply Bytes String from client..') //how to get the reply bytes string from Client side?
bytes = socket.recvfrom(1024);