python3 学习笔记 tcp/socket通信 封装通信模块
tcp/socket通信 封装
发送功能,接收功能独立分开
定义server类和client类,可以直接继承使用
后续可以将串口初始化信息,放入配置文件
# 服务器端代码++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
from socket import *
import os
from time import ctime
import threading
from cmd import Cmd
class Tcpsersocket(Cmd):
def __init__(self):
self.start_time = ctime()
print('starting ' ,self.start_time)
def conf(self):
print(os.path)
self.host = '127.0.0.1'
self.port = 21567
self.bufsize = 1024
self.addr = (self.host, self.port)
#声明一个socket对象 tcpsersocket
tcpsersock = socket(AF_INET, SOCK_STREAM)
tcpsersock.bind(self.addr)
tcpsersock.listen(5)
quit = False
shutdown = False
print('waiting for connection...')
self.clientsocket, addr = tcpsersock.accept()
print('client connected from: ', addr)
def send(self):
# self.ss = ss
while 1:
self.ss = input("input>>")
self.clientsocket.send(self.ss.encode('utf-8'))
def rec(self):
while 1:
data = self.clientsocket.recv(self.bufsize)
data = data.decode('utf-8')
print('\n',ctime(), '\n', "rec from client: ", data,'\n','press enter to continue')
def main():
x = Tcpsersocket()
x.conf()
t1 = threading.Thread(target=x.send, name="send")
t2 = threading.Thread(target=x.rec, name="rec")
t1.start()
t2.start()
if __name__ =='__main__':
main()
from socket import *
import threading
from cmd import Cmd
class myclientsocket(Cmd):
def __init__(self,host,port,BUFFSIZE):
Cmd.__init__(self)
self.host = host
self.port = port
self.buffsize = BUFFSIZE
self.addr = (self.host, self.port)
def conn(self):
self.clientsocket = socket(AF_INET, SOCK_STREAM)
# 实例名能否和类名 一样呢
self.clientsocket.connect(self.addr)
def rec(self):
while 1:
rdata = self.clientsocket.recv(self.buffsize)
print("rec from ser: ", rdata.decode('utf8'),'\n','press enter to continue')
def send(self):
while 1:
data = input('send>')
self.clientsocket.send(data.encode('utf8'))
def main():
y = myclientsocket('127.0.0.1', 21567, 1024)
y.conn()
t1 = threading.Thread(target=y.send, name="send")
t2 = threading.Thread(target=y.rec, name="rec")
t1.start()
t2.start()
if __name__ =='__main__':
main()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理