四大步骤:1.创建Socket;2.绑定;3.连接;4.通信
该代码创建了一个Box类,用于YOLOv5传框数据到推流端画框。
import socket class Box(object): def __init__(self, ip_addr, port): self.__is_connect = False self.__ip_addr = ip_addr self.__header_len = 32 self.__port = 0 self.__client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: self.__client.bind((ip_addr, port)) except socket.error: print('fail to bind client ip and addr') def getIpAndPort(self): return self.__ip_addr, self.__port def tryConnect(self, ip_addr_server, port_sever): try: self.__client.connect((ip_addr_server, port_sever)) except socket.error: print("connect error") else: self.__is_connect = True def close(self): #self.__client.shutdown(2) self.__client.close() # 发送控制指令 def sendBoxPos(self, data): if not self.__is_connect: print('please use tryConnect function firstly') return pkg = self.__pakageData(data) self.__client.send(pkg.encode('utf-8')) def __pakageData(self, data): # print("data", data) data_len = len(data) LEN = str(data_len) length_LEM = len(LEN) while length_LEM < 3: LEN = "0" + LEN length_LEM += 1 return LEN + "\\r\\n" + data
1.创建Socket和绑定Socket
def __init__(self, ip_addr, port): self.__is_connect = False self.__ip_addr = ip_addr self.__header_len = 32 self.__port = 0 self.__client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: self.__client.bind((ip_addr, port)) except socket.error: print('fail to bind client ip and addr')
2.连接
def tryConnect(self, ip_addr_server, port_sever): try: self.__client.connect((ip_addr_server, port_sever)) except socket.error: print("connect error") else: self.__is_connect = True
3.发送
def sendBoxPos(self, data): if not self.__is_connect: print('please use tryConnect function firstly') return pkg = self.__pakageData(data) self.__client.send(pkg.encode('utf-8'))
python Socket通信
于 2023-06-16 22:39:16 首次发布