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

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

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

python-socket-SocketServer - Forking的更多相关文章

  1. python Socket socketserver

    Socket 套接字 socket的 类型 实现socket对象时传入 到socket 类中 socket.AF_INET 服务器间的通讯 IPv4 socket.AF_INET6 IPv6 sock ...

  2. python socket和socketserver

    Python提供了两个基本的socket模块.一个是socket,它提供了标准的BSD Socket API:另一个是socketServer,它提供了服务器中心类,可以简化网络服务器的开发. 下面先 ...

  3. python3之socket&socketserver网络编程

    1.套接字与套接模块 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并进行连接,如发送和接受数据.为了 ...

  4. python利用socketserver实现并发套接字功能

    本文实现利用python的socketserver这个强大的模块实现套接字的并发 目录结构如下: 测试文件请放在server_file文件夹里面 server.py #!/usr/bin/env py ...

  5. python之socketserver实现并发

    python之socketserver实现并发 服务端 import socketserver #socketserver模块是用来实现并发 # 我们自己的类里一定要继承socketserver.Ba ...

  6. PYTHON SOCKET编程简介

    原文地址: PYTHON SOCKET编程详细介绍   Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 Soc ...

  7. python socket编程笔记

    用python实现一个简单的socket网络聊天通讯 (Linux --py2.7平台与windows--py3.6平台) 人生苦短之我用Python篇(socket编程) python之路 sock ...

  8. Python Socket网络编程详解

    Socket 简介 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. s ...

  9. python socket编程 实现简单p2p聊天程序

    目标是写一个python的p2p聊天的项目,这里先说一下python socket的基础课程 一.Python Socket 基础课程 Socket就是套接字,作为BSD UNIX的进程通信机制,取后 ...

  10. python - socket通信笔记

    参考: 通过编写聊天程序来熟悉python中多线程和socket的用法:https://www.cnblogs.com/mingjiatang/p/4905395.html python socket ...

随机推荐

  1. BlockingQueue 阻塞队列,很有用的一种

    BlockingQueue的核心方法:放入数据: offer(anObject):表示如果可能的话,将anObject加到BlockingQueue里,即如果BlockingQueue可以容纳, 则返 ...

  2. 页面localStorage用作数据缓存的简易封装

    最近做了一些前端控件的封装,需要用到数据本地存储,开始采用cookie,发现很容易就超过了cookie的容量限制,于是改用localStorage,但localStorage过于简单,没有任何管理和限 ...

  3. 无法识别的属性“targetFramework

    出现这个错误的原因是NET Framework 版本版本号不对应,iis和网站使用的一致版本就可以了.

  4. 动态页面 servlet

    1.常见软件架构. C/S: 客户端 服务器  安全性较好,但是升级需要升级两端   B/S: 浏览器 服务器  安全性较差, 但是升级时 只需要升级服务器端(我们今后就是开发这个架构的) 2.资源分 ...

  5. java25

    1:如何让Netbeans的东西Eclipse能访问.    在Eclipse中创建项目,把Netbeans项目的src下的东西给拿过来即可.    注意:修改项目编码为UTF-8    2:GUI( ...

  6. MySQL备份之【mydumper 学习】

    MySQL在备份方面包含了自身的mysqldump工具,但其只支持单线程工作,这就使得它无法迅速的备份数据.而mydumper作为一个实用工具,能够良好支持多线程工作,这使得它在处理速度方面十倍于传统 ...

  7. Qt: 时钟Demo

    其实是一个很简单的Demo,可以编译了拿NSIS打包.最近在做富文本编辑器和补C++不记得的东西吧,项目遥遥无期. //clock.pro #----------------------------- ...

  8. artdialog

    <html><head><meta http-equiv="Content-Type" content="text/html; charse ...

  9. Sublime Text 2报“Decode error - output not utf-8”错误的解决办法

    [Decode error - output not utf-8] [Decode error - output not utf-8]   应该怎么办?   这是因为python配置的编译环境的编码不 ...

  10. iOS 英文学习

    deprecated 废弃的 NS_DEPRECATED_IOS(2_0, 7_0)2.0开始使用,7.0废弃 NS_AVAILABLE_IOS(7_0) 7.0之后有效 Indicator 指示器 ...