码迷,mamicode.com
首页 > 编程语言 > 详细

2017.07.16 Python网络编程之在套接字服务器中使用ThreadingMixIn

时间:2017-07-16 11:10:49      阅读:344      评论:0      收藏:0      [点我收藏+]

标签:logs   send   应用   images   can   技术   response   end   组成   

直接上代码,之后再解释:

# -*- 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=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

标签:logs   send   应用   images   can   技术   response   end   组成   

原文地址:http://www.cnblogs.com/hqutcy/p/7189800.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!