python2.7_2.2_在套接字服务器上使用ForkingMixIn
2016-01-29 10:29
609 查看
Linux系统下才能用本程序。因为有Frok新的进程。。。。
代码如下:
代码如下:
# -*- coding: utf-8 -*- import os import socket import threading import SocketServer SERVER_HOST = 'localhost' SERVER_PORT = 0 BUF_SIZE = 1024 ECHO_MSG = 'Hello echo server!' class ForkingClient(): """一个客户端用来测试forking server""" def __init__(self, ip, port): self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.connect((ip, port)) def run(self): """客户端playing with服务器""" # 发送数据到服务端 current_process_id = os.getpid() print 'PID %s Sending echo message to the server:"%s"' % (current_process_id, ECHO_MSG) sent_data_length = self.sock.send(ECHO_MSG) print 'Sent:%d characters, so far ...' % sent_data_length # 显示服务端回应 response = self.sock.recv(BUF_SIZE) print 'PID %s received:%s' % (current_process_id, response[5:]) def shutdown(self): """清空客户端套接字""" self.sock.close() class ForkingServerRequestHandler(SocketServer.BaseRequestHandler): def handle(self): # 发送回显回客户端 data = self.request.recv(BUF_SIZE) current_process_id = os.getegid() response = '%s:%s' % (current_process_id, data) print 'Server sending response [current_process_id:data] = [%s]' %response self.request.send(response) return class ForkingServer(SocketServer.ForkingMixIn, SocketServer.TCPServer, ): pass def main(): server = ForkingServer((SERVER_HOST, SERVER_PORT), ForkingServerRequestHandler) ip, port = server.server_address server_thread = threading.Thread(target=server.serve_forever) server_thread.setDaemon(True) server_thread.start() print 'Server loop running PID:%s' % os.getpid() client1 = ForkingClient(ip, port) client1.run() client2 = ForkingClient(ip, port) client2.run() server.shutdown() client1.shutdown() client2.shutdown() server.socket.close() if __name__ == '__main__': main()
相关文章推荐
- python基础:三层循环
- python与pexpect实现ssh操作
- Python twisted article
- selenium_python系列之二 Python启动浏览器Firefox\Chrome\IE
- 21行python代码实现拼写检查器
- python读网页解析内容写入文件
- uwsgi 热启动
- [Python]学习装饰器语法
- python文件操作--字符串替换
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python环境搭建之OpenCV的步骤方法
- Python读写ini配置文件
- Python学习第六天
- python学习笔记-Day13 -css基础知识
- Python 常见异常列表
- Mac上Python从2.x升级到3.x的艰苦历程
- python的学习,28,1,2016
- python学习笔记-Day13-- 前端知识 html
- Pyhton 8.2 多线程
- 【Python】给pypy安装第三方库