Python 3 TCP / IP ascii命令

时间:2013-06-06 17:17:23

标签: python tcp python-3.x ip

我正在尝试向我的步进驱动器发送ascii命令(RV是移动命令)。 但是我尝试过的所有内容都以Python(我认为)为“string”的开头添加了一个额外的字符;在这种情况下,它添加了一个“g”。步进器命令终端不添加“g”。

来自Wireshark

0000  00 04 a3 22 56 6e f0 1f  af 0b ba fd 08 00 45 00   ..."Vn.. ......E.
0010  00 20 35 b5 00 00 80 11  00 00 c0 a8 4b 62 c0 a8   . 5..... ....Kb..
0020  4b 96 d6 a3 1e 5f 00 0c  18 67 52 56 0a 20         K...._.. .gRV.   

的Python

def main():
    import socket

    data1 = bytes('RV\n ', 'ascii')
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(("108.108.108.150",7775))
    s.send(data1)


if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:1)

除非您知道每个字节的含义,否则不应对数据包中的任何“可打印”字符串做出假设。 在这种特殊情况下,字节'.g'或0x18 0x67是UDP校验和。 AFAIK,它可以以某种方式被禁用。如果您的接收器将获得此数据包,则其数据字段中将包含52 56 0a 20(“RV \ n”)。  这就是为什么你总是通过略微改变有效载荷和[可能] udp源端口获得'cRV'或'eRV'。