Python语言基础-TCP客户端的Socket通信
来源:互联网 发布:淘宝排版软件 编辑:程序博客网 时间:2024/05/17 23:22
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] & 0xffprint buffer[1] & 0xffprint buffer[2] & 0xffi = 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 iint类型为32bit,即4byte。此处才用从低到高的小字节序(little-debian)的顺序存储int数据。
阅读全文
0 0
- Python语言基础-TCP客户端的Socket通信
- C++ 简单的 Tcp 实现[socket] 客户端与客户端通信
- C++ 简单的 Tcp 实现[socket] 客户端与客户端通信
- C++ 简单的 Tcp 实现[socket] 客户端与客户端通信
- c语言实现TCP的socket通信
- C# TCP Socket通信客户端
- Socket(Tcp)通信客户端
- socket 客户端和服务端的TCP基本通信
- java 通过 socket 实现 服务器和客户端的通信 TCP
- TCP通信客户端Socket 心跳线程的实现
- 基于tcp的socket通信(单个客户端与服务端)
- C++ 简单的 Tcp 实现[socket] 服务器端与客户端通信
- Socket TCP 协议实现服务端和客户端的简单通信
- java实现基于TCP的socket通信实例(客户端)
- python socket基础通信
- python TCP客户端服务端通信
- Python实现socket通信 (tcp)
- Socket通信基础——基于TCP的用户登录
- 浅谈SpringMVC后端与前端Ajax的五种交互方法
- 入坑cocos之菜鸟瞎喷
- Shell 显示带颜色字体
- Eclipse中Debug功能使用
- NodeJS文件上传示例代码
- Python语言基础-TCP客户端的Socket通信
- perl 文件测试符
- 多标记KNN算法实现(Python3.6)
- Python的For循环和判断
- python爬虫
- 冒泡程序
- K-近邻(KNN)算法
- struts2---The content of element type "package" must match "(result-types?,interceptors?,default-int
- Centos6.5安装mariadb的坑坑