python中socket多线程怎么让客户端与服务器连接
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,本篇内容主要讲解"python中socket多线程怎么让客户端与服务器连接",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python中socket多线程怎
千家信息网最后更新 2025年11月06日python中socket多线程怎么让客户端与服务器连接
本篇内容主要讲解"python中socket多线程怎么让客户端与服务器连接",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python中socket多线程怎么让客户端与服务器连接"吧!
python socket多线程实现客户端与服务器连接,供大家参考,具体内容如下
server代码:
import jsonimport socketimport threadingimport timeimport structclass Server(): def __init__(self): self.g_conn_pool = {} # 连接池 # 记录客户端数量 self.num =0 # 服务器本地地址 self.address = ('0.0.0.0', 8000) # 初始化服务器 self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.server_socket.bind(self.address) self.server_socket.listen(128) def accept_client(self): """ 接收新连接 """ while True: client_socket, info = self.server_socket.accept() # 阻塞,等待客户端连接 print(client_socket,port) # 给每个客户端创建一个独立的线程进行管理 thread = threading.Thread(target=self.recv_msg, args=(client_socket,info)) thread.setDaemon(True) thread.start() def recv_msg(self,client,info): # 提示服务器开启成功 print('服务器已准备就绪!') client.sendall("connect server successfully!".encode(encoding='utf8')) # 持续接受客户端连接 while True: try: client.sendall(b'Success') while True: msg = client.recv(1024) msg_recv = msg.decode('utf-8') if not msg_recv: continue else: recv_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) print('客户端 ' + recv_time + ':\n') print(' ' + msg_recv + '\n') except Exception as e: print('客户端断开连接...') exit(-1) break def start_new_thread(self): """启动新线程来接收信息""" thread = threading.Thread(target=self.accept_client, args=()) thread.setDaemon(True) thread.start()server服务器类,主要是监听以及接收客户端的信息。
#实例化一个Flask节点app = Flask(__name__)@app.route('/')def hello(): return 'hello'if __name__ == '__main__': #创建解析器 from argparse import ArgumentParser parser = ArgumentParser() parser.add_argument('-p', '--port', default=5030, type=int, help='port to listen on') args = parser.parse_args() #获取端口号 port = args.port #实例化一个server类 并启动 py_server = Server() py_server.start_new_thread() #启动Flask节点 app.run(host='127.0.0.1',port=port)Client代码
class Client(): def __init__(self): #服务器ip与端口 self.server_address = ('127.0.0.1', 8000) self.num = 0 def recv_msg(self): print("正在连接服务器....") # 客户端连接服务器 while True: try: self.client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #连接服务器 self.client_socket.connect(self.server_address) num = self.num # 制作报头 header_dic = { 'filename': num } header_bytes = json.dumps(header_dic).encode('utf-8') self.client_socket.send(struct.pack('i', len(header_bytes))) self.client_socket.send(header_bytes) #接收信息 while True: msg_recv = self.client_socket.recv(1024).decode('gbk') print(msg_recv) if msg_recv == 'Success': print('客户端已与服务器成功建立连接...') elif not msg_recv: continue else: recv_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) print( '服务器 ' + recv_time + ':\n') print(' ' + msg_recv + '\n') except: print('与服务器断开连接...') break def start_new_thread(self): """启动新线程来接收信息""" thread = threading.Thread(target=self.recv_msg, args=()) thread.setDaemon(True) thread.start() def main(): wf = Client() wf.start_new_thread() while True: a = input() wf.client_socket.send(a.encode('utf-8'))if __name__ == '__main__': main()以上为客户端程序的代码。
下面是运行的结果:
服务器端:

多个客户端:
代码实现还是蛮容易的,具体可以自行修改使用。
到此,相信大家对"python中socket多线程怎么让客户端与服务器连接"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
服务
服务器
客户
客户端
线程
代码
信息
内容
成功
实例
节点
学习
实用
更深
兴趣
口号
地址
多个
实用性
实际
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
河南我的菜互联网科技
服务器一插网线就卡了
数据库三级映像技术
多台服务器如何配置
一中预防网络安全事故
目录服务器未开放意味什么
恶魔之魂登录不了服务器
晋中软件开发要多少钱
榆林市网络安全保卫支队
网络安全馆直播郑州高新区
数据库概论第7章
3g 4g网络技术
数据库视图 安全的角度
svn数据库设计
计算机网络技术就业薪金
软件开发创业好做吗
数据库所有表迁移表空间
南京方寸网络技术
东土科技与武汉工业互联网大会
领航杯网络安全知识竞赛平台
数据库都有哪些类型
云服务器可以带多少用户
讲述软件开发的阶段
用友后台用的数据库产品
方舟服务器管理器验证
网络安全法自几几年实行
长沙北大青鸟软件开发学校
c 售票系统数据库
速达软件登陆提示数据库
工业自动化开源数据库