Python语言基础-TCP客户端的Socket通信

本文介绍了Python中TCP客户端的Socket通信,包括连接服务器、发送和接收byte数据的详细步骤。讲解了struct如何构建byte数据,send函数的使用,以及recv_into函数如何接受并解析bytearray数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Python TCP客户端的Socket通信

1.1 连接服务器

self.serverSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

self.serverHost = '10.118.21.61'
self.serverPort = 20173

self.serverSock.connect((self.serverHost, self.serverPort))

 

 

 

1.2 发送byte数据

1.2.1 struct构建byte数据:

values = (len(self.action), self.action, self.dataType, len(self.fileName), self.fileName, len(self.source), self.source)
s = struct.Struct('<B' + str(len(self.action)) + 'sBB' + str(len(self.fileName)) + 'sI' + str(len(self.source)) + 's')
packed_data = s.pack(*values)

 

如果format为sI时,I代表的int十六进制,可能会在前面多出00,原因??

解决办法:需在format最前面加上'<'或者'>'。

 

1.2.2 send函数

self.serverSock.send(reqBytes)//发送字节串
self.serverSock.shutdown(socket.SHUT_WR)//关闭输出流,防止服务器读取时,无法读取到结束符

 

1.3 recv_into函数

 

1.3.1 接受bytearray数据

buffer = bytearray(100)
self.serverSock.recv_into(buffer)
print binascii.hexlify(buffer)
print buffer[0] & 0xff
print buffer[1] & 0xff
print buffer[2] & 0xff
i = self.byte4ToInt(buffer, 3)
print i
 

执行结果:

0101000d000000

1

1

0

13

 

1.3.2 byte4ToInt函数

def byte4ToInt(self,bytearray, start):
    i = (bytearray[start] & 0xff) \
        | (bytearray[start+1] & 0xff) \
        | (bytearray[start+2] & 0xff) \
        | (bytearray[start+3] & 0xff)
    return i
int类型为32bit,即4byte。此处才用从低到高的小字节序(little-debian)的顺序存储int数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值