zoukankan      html  css  js  c++  java
  • python-socket-SocketServer

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

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

    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.该函数的作用是在一个进程中处理连接后来自客户端的消息。

  • 相关阅读:
    mvc是如何工作的
    MVC4 AJAX Unobtrusive
    MVC4 jQuery UI自动完成
    MVC4Html Helper
    MVC4 Layouts布局视图局部视图
    理解mvc
    ASP.NET MVC HTMLHELPER类的方法总结
    I2C中的重复起始条件到底是什么意思
    release, retain, autorelease 与 AT, MT, AMT
    CMSIS SVD(System View Description)小解
  • 原文地址:https://www.cnblogs.com/felixwa/p/6091356.html
Copyright © 2011-2022 走看看