python recv函数_Python发送/ recv二进制数据

我试图发送和接收Python(v3)中的二进制数据。我试图做的方式是在客户端,我手动创建一个字节的字符串,然后通过套接字发送到服务器。在服务器端,我收到数据并手动访问各个位来解析消息。Python发送/ recv二进制数据

这是客户端的外观:

remoteIP = "164.107.112.72"

remotePort = 34562

remoteStruct = remoteIP.split('.', 4)

remoteIPBytes = ((int)(remoteStruct[0])).to_bytes(1, byteorder='little') + ((int)(remoteStruct[1])).to_bytes(1, byteorder='little') + ((int)(remoteStruct[2])).to_bytes(1, byteorder='little') + ((int)(remoteStruct[3])).to_bytes(1, byteorder='little')

headerStruct = remoteIPBytes + remotePort.to_bytes(2, byteorder='little')

sequenceNum = 0

size = #filesize

data = headerStruct + sequenceNum.to_bytes(1, byteorder='little') + (1).to_bytes(1,byteorder='little') + size.to_bytes(4, byteorder='little')

#data is then sent to server

这是服务器如何处理数据:

serversock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP Datagram

host = '164.107.112.70'

serversock.bind((host, localPort))

seqNum = 0

#get size

size = 0

var = serversock.recvfrom(12)

seqNum = int.from_bytes((str(var))[6], byteorder='little')

在代码的最后一行,我得到一个错误,指出(STR( var))被视为unicode字符串而不是二进制字符串。但是,如果我不作为字符串进行投射,则会出现访问超出界限的错误。

有人可以向我解释在python中发送和接收二进制数据的正确方法是什么?我一直在使用struct.pack并解压前/发送数据后尝试过,但在拆箱时,我总是会出错,即使格式化字符串是相同

2014-03-24

Mitch

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值