2013-01-31 3 views
1
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() 

1 단계 : 서버는 GPS 장치 바이트를받을 string.and 동적 IP 주소를 얻을 것이다
2 단계 : 서버가 얻을 수 있습니다 클라이언트 동적 IP는 이미 서버가 클라이언트 측 (GPS 장치)에 명령을 보냅니다.
3 단계 : 클라이언트 측에서 바이트 문자열을 되돌려 보내 겠지만 여기에 회신 바이트 문자열을 캡처하는 방법을 알지 못합니다. 서버가 보낸 사람의 IP 주소와 포트에 응답하면파이썬 : UDP 소켓 어떻게 대기 클라이언트 측에 회신 바이트 문자열

답변

1

이 작업을 수행 할 수

print('waiting Reply Bytes String from client..') //how to get the reply bytes string from Client side? 
bytes = socket.recvfrom(1024);