python中socket多线程怎么让客户端与服务器连接
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇内容主要讲解"python中socket多线程怎么让客户端与服务器连接",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python中socket多线程怎
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
阿里云数据库研发校招
松江区网络安全审计系统咨询费用
云服务器 快照
同花顺中国宏观经济数据库
命令行备份所有数据库
多人聊天系统网络安全实验
数据库查询例子
海洋神奇宝贝服务器
上海还斌软件开发
html直接存数据库中
怀旧服魔兽世界pvp服务器玩法
软件开发公司排行榜前十名
电脑编程是不是软件开发
哈工大网络安全就业前景
淄博联想服务器在哪里
西安网络安全学校最好的是哪家
时代数据库的应用和作用
富士康软件开发与运维课
触摸终端软件开发
网络技术代称
影响软件开发进度的因素
网络技术服务费的发票税率
网络安全教育体会250
长沙专业服务器散热器供应商
网络安全管理员教学计划和大纲
公司服务器管理用户
迅雷视频软件开发
图书馆的数据库课程设计案例
贵州省党建数据库
软件开发公司网站内容