python多线程socket编程--多客户端接入
来源:互联网 发布:linux搜狗输入法设置 编辑:程序博客网 时间:2024/06/06 03:18
Python中实现socket通信的服务端比较复杂,而客户端非常简单,所以客户端基本上都是用sockct模块实现,而服务
端用有很多模块可以使用,如下:
1、客户端
#!/usr/bin/env python#coding:utf-8'''file:client.pydate:9/9/17 3:43 PMauthor:lockeyemail:lockey@123.comdesc:socket编程客户端,python3.6.2'''import socket,sysHOST = '192.168.1.6'PORT = 8998ADDR =(HOST,PORT)BUFSIZE = 1024sock = socket.socket()try: sock.connect(ADDR) print('have connected with server') while True: data = input('lockey# ') if len(data)>0: print('send:',data) sock.sendall(data.encode('utf-8')) #不要用send() recv_data = sock.recv(BUFSIZE) print('receive:',recv_data.decode('utf-8')) else: sock.close() breakexcept Exception: print('error') sock.close() sys.exit()
2、SocketServer模块
为了能够让多个客户端同时接入服务并进行通信,服务端将使用SocketServer模块来实现,这样的话用户不用在子线程结束后,利用父进程对它进行处理,也不用关心socket的关闭,一切都由SocketServer来完成。
#!/usr/bin/env python#coding:utf-8'''file:client.pydate:9/9/17 3:43 PMauthor:lockeyemail:lockey@123.comdesc:socket编程服务器端,python3.6.2'''from socketserver import BaseRequestHandler,ThreadingTCPServerimport threadingBUF_SIZE=1024class Handler(BaseRequestHandler): def handle(self): address,pid = self.client_address print('%s connected!'%address) while True: data = self.request.recv(BUF_SIZE) if len(data)>0: print('receive=',data.decode('utf-8')) cur_thread = threading.current_thread() #response = '{}:{}'.format(cur_thread.ident,data) self.request.sendall('response'.encode('utf-8')) print('send:','response') else: print('close') breakif __name__ == '__main__': HOST = '192.168.1.6' PORT = 8998 ADDR = (HOST,PORT) server = ThreadingTCPServer(ADDR,Handler) #参数为监听地址和已建立连接的处理类 print('listening') server.serve_forever() #监听,建立好TCP连接后,为该连接创建新的socket和线程,并由处理类中的handle方法处理 print(server)
以下测试中我使用另外一台主机和本机的两个中断去连接服务器,都可以正常连接并且能进行数据应答交互
注意:此程序示例运行平台为rhel7.2.x86_64,python版本为3.6.2,对于windows平台和非同一python版本的用户可能缺乏一定的兼容性,如果是其他平台用户请自行修正!!
有任何问题可以留言讨论
阅读全文
1 2
- python多线程socket编程--多客户端接入
- python多线程socket编程--多客户端接入
- java socket编程多线程处理多客户端
- java Socket编程--多线程实现为多个客户端服务
- 编程实现基于UDP的多线程多客户端socket应用
- socket编程多客户端
- java socket编程,多线程,客户端服务端
- socket编程(TCP多线程客户端服务器)
- Socket 多线程 JDBC综合编程一客户端编程
- Python 的 Socket 编程多线程教程
- Python socket编程学习(二)socket客户端
- java网络编程(二)复用Socket连接以及使用多线程完成多个客户端的连接
- 使用多线程实现多客户端的连接(通过Socket实现TCP编程)
- Socket编程——使用多线程实现多客户端的通信
- Socket 多线程,Java C/S 模式 编程(客户端)
- java使用多线程编程,实现socket服务器客户端交互
- 多线程Socket编程实现服务器与客户端的连接
- C# socket 多线程多客户端简单实例
- 输入一个链表,反转链表后,输出链表的所有元素。
- 抽取Fragment 和对抽取的Fragment进行应用(心得用的时候稍微修改就可以了)
- 带你走进SAP项目实施过程——立项(1)
- php环境之WampServer(wamp)集成环境的搭建
- CentOS环境下Docker安装详细步骤
- python多线程socket编程--多客户端接入
- 正则表达式
- LINUX中文件描述
- struts2之类型转换器的使用(明白原理,不用掌握)
- background-position 用法详细介绍
- Leetcode 54, Spiral Matrix
- JLink V8 Win7下烧写
- ListView或者ScrollView嵌套listView的解决方案
- Spring Cloud 的 Hystrix 更多参数配置信息