首页 > 代码库 > 2017.07.16 Python网络编程之在套接字服务器中使用ThreadingMixIn
2017.07.16 Python网络编程之在套接字服务器中使用ThreadingMixIn
直接上代码,之后再解释:
# -*- coding: UTF-8 -*-
# 或许基于某些原因你不想编写基于进程的应用程序,而更愿意编写多线程应用程序
# 和之前的基于ForkingMixIn的套接字服务器一样,使用ThreadingMixIn编写的套接字服务器要遵循相同的回显服务器编程模式
# ThreadedServr继承自TCPServer和ThreadingMixIn,客户端连接这个多线程版服务器时,会创建一个新线程
# !usr/bin/env python
# Python Network Programming Cookbook --Chapter -1
# This program is optimized for Python 2.7
# It may run on any other version with/without modifications
import os
import socket
import threading
import SocketServer
SERVER_HOST=‘localhost‘
SERVER_PORT=0
BUF_SIZE=1024
def client(ip,port,message):
"""一个客户端线程服务器测试程序"""
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect((ip,port))
try:
sock.sendall(message)
response=sock.recv(BUF_SIZE)
print "客户端收到:%s" %response
finally:
sock.close()
class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
"""一个线程TCP请求处理的例子"""
def handle(self):
data=http://www.mamicode.com/self.request.recv(1024)
current_thread=threading.current_thread()
response="%s :%s" %(current_thread.name,data)
self.request.sendall(response)
class ThreadedTCPServer(SocketServer.ThreadingMixIn,SocketServer.TCPServer):
"""这里没什么补充的,从父类中继承所有必须的"""
pass
if __name__==‘__main__‘:
server=ThreadedTCPServer((SERVER_HOST,SERVER_PORT),ThreadedTCPRequestHandler)
ip,port=server.server_address
server_thread=threading.Thread(target=server.serve_forever)
server_thread.daemon=True
server_thread.start()
print "服务器loop running 在线程上:%s" %server_thread.name
client(ip,port,"你好哈来自客户端1")
client(ip,port,"你好帅来自客户端2")
client(ip,port,"你好帅来自客户端3")
server.shutdown()
三部分组成:
1.客户端部分
2.请求处理部分:
3.主程序部分:
想要了解很多SocketServer的知识,可以查阅这个博文:http://blog.csdn.net/candcplusplus/article/details/51794411
运行结果如下:
2017.07.16 Python网络编程之在套接字服务器中使用ThreadingMixIn
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。