是的,我知道UDP不好,但不幸的是我别无选择-我的服务器只采用UDP。。。
我有一个包含十六进制值的列表,需要发送UDP。
如果我试着把名单发给我-
'类型错误:必须是字符串或缓冲区,而不是列表'
如果我转换成一个字符串(在我的代码中称为列表),我得到-
'类型错误:需要整数'
打印列表=09004000e3f00005f5
如果我把列表转换成以16为基数的整数-
'TypeError:必须是字符串或缓冲区,不能是long'
怀疑这是基本的东西,但我错过了。
简单代码如下:import socket #for sockets
UDP_PORT = 21105;
UDP_HOST = '10.194.34.151';
z21 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
def _getLocoInfo (id):
arr = [ 0x09, 0x00, 0x40, 0x00, 0xE3, 0xF0, 0x00, id]
arr.append(arr[5]^arr[6]^arr[7])
return arr
msg = _getLocoInfo(0x05)
aList = "".join("%02x" % b for b in msg)
print (a)
try :
z21.send(msg ,(UDP_HOST, UDP_PORT) )
# receive data from client (data, addr)
d = s.recvfrom(1024)
print ('Server reply : ' + reply)
except socket.error as e:
print ('Error Code : ' + str(e[0]) + ' Message ' + e[1])
sys.exit()