python-socket-SocketServer - Forking

在之前的文章中,客户端和服务端。一般情况下并非是一对一的关系。多对一,多个客户端连接一个服务端。并且服务端需要对每一个客户端进行信息处理。

在客户端不多的情况下,可以采取为每一个客户端创建一个进程对其进行服务。

SocketServer中为Forking架构。

代码说明:

"""
@function test forking request handle
"""

import os
import socket
import SocketServer


class ForkingServer(SocketServer.ForkingMixIn, SocketServer.TCPServer):
    """ no thing to do"""

    pass


class ForkingMsgHandler(SocketServer.BaseRequestHandler):

    def handle(self):
        data = self.request.recv(1024)
        current_process = os.getpid()
        print " the process id is : " + current_process
        response = "Process " + current_process + " send response message"
        self.request.send(response)
        return

if __name__ == '__main__':
    tcp_server = ForkingServer(("172.0.0.1", 8321), ForkingMsgHandler)

 两个关键类ForkingServer和ForkingMsgHandler

ForkingServer需要继承SocketServer.ForkingMixIn 和 SocketServer.TCPServer.并且不能颠倒顺序。当收到一个来自客户端的请求,Forking一个新的进程在进程中启动TCPserver与其建立连接。

ForkingMsgHander为消息处理类。需要继承SocketServer.BaseRequestHandler.该函数的作用是在一个进程中处理连接后来自客户端的消息。

 

转载于:https://www.cnblogs.com/felixwa/p/6091356.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值