Python TCP套接字编程

时间:2015-06-29 19:06:09

标签: python sockets tcp

我在使用我的两台Digi调制解调器进行通信时遇到了一些困难。

def sockCon ():
global HOST
global PORT
global TX

TX = "\x7E\x00\x0C\x01\x00\xA5"

BUFFER = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
b = 1
while b == 1:        
    print ('T '+TX)
    s.send(TX.encode('latin-1'))        
    time.sleep(5)
    data = s.recv(BUFFER)
    print ('R '+decode(TX,'latin-1'), BUFFER)

基本上问题是当它发送它时要么发送完全错误要么根本不发送它会给我这个错误。

TypeError: 'str' does not support the buffer interface

2 个答案:

答案 0 :(得分:1)

你可能不应该做那个编码位

TX = b"\x7E\x00\x0C\x01\x00\xA5"

应该解决你的问题(在python3中你需要发送字节而不是字符串)

TX = b"\x7E\x00\x0C\x01\x00\xA5"
s.send(TX)
print( repr(s.recv(BUFFER)) )

答案 1 :(得分:0)

如果您使用Python3x,那么string与Python 2.x的类型不同,您必须将其转换为字节(对其进行编码)。

TX = "\x7E\x00\x0C\x01\x00\xA5"
s.send(bytes(TX, 'latin-1'))