SocketServer.StreamRequestHandler中对客户端发过来的数据是用rfile属性来处理的,rfile是一个类file对象.有缓冲.可以按行分次读取;发往客户端的数据通过wfile属性来处理,wfile不缓冲数据,对客户端发送的数据需一次性写入.
如下代码:
#! /usr/bin/env python
#coding=utf-8
'''
单线程服务器程序
'''
from SocketServer import TCPServer as TCP, StreamRequestHandler as SRH
class MyTCPHandler(SRH):
def handle(self):
'''
覆盖方法,对父类的方法重写
'''
self.firstline=self.rfile.readline().strip()
#命令分发
if(self.firstline=='login'):
print 'if login'
name=self.rfile.readline().strip()
print name
pwd=self.rfile.readline().strip()
print name
self.login(name,pwd)
elif(self.firstline=='start_server'):
pass
elif(self.firstline=='stop_server'):
pass
elif(self.firstline=='open_firewall'):
pass
elif(self.firstline=='close_firewall'):
pass
elif(self.firstline=='read_firewall_ip_list'):
pass
elif(self.firstline=='write_firewall_ip_list'):
pass
elif(self.firstline=='read_server_ip_list'):
pass
elif(self.firstline=='write_server_ip_list'):
pass
elif(self.firstline=='remote_update'):
pass
elif(self.firstline=='local_synchronize'):
pass
else:
print 'error'
'''print self.rfile.readline()
print self.rfile.readline()
'''
line=self.rfile.readline()
while line!='':
#self.wfile.write('%s' % line)
line=self.rfile.readline()
print line
self.wfile.write('ok'+'ok2'+'ok3')#这里的ok,ok1,ok2不能分次write,会报错
def login(self,name,pwd):
print 'login'
self.wfile.write(name+pwd+'ok')
if __name__ == "__main__":
#本机,使用端口9999
HOST, PORT = "localhost", 9999
# 创建服务器并绑定到本机的9999端口
server = TCP((HOST, PORT), MyTCPHandler)
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
server.serve_forever()
分享到:
相关推荐
第八周-第09章节-Python3.5-SocketServer.avi
1. 定义处理程序:编写一个继承自`socketserver.BaseRequestHandler`的类,重写`handle`方法,处理客户端的请求。 ```python class RequestHandler(socketserver.BaseRequestHandler): def handle(self): data = ...
Python中的Socket和SocketServer是进行网络通信的基础工具,它们提供了创建和管理客户端-服务器应用程序的能力。Socket在计算机网络中扮演着重要角色,它是一个抽象层,允许程序通过网络发送和接收数据,就像电源...
首先,先了解下SocketServer模块中可供使用的类: BaseServer:包含服务器的核心功能与混合(mix-in)类挂钩;这个类只用于派生,所以不会生成这个类的实例;可以考虑使用TCPServer和UDPServer。 TCPServer/UDP...
本压缩包"**c#开发SocketServer.rar**"显然包含了关于使用C#语言创建Socket服务器的相关资料,这对于我们深入理解和实践C#网络编程具有很高的价值。 Socket在计算机网络中是一种用于实现进程间通信(IPC)的接口,...
- 定义一个处理请求的处理器类,该类通常继承自`socketserver.BaseRequestHandler`,并在`handle`方法中编写处理客户端请求的逻辑。 2. **创建客户端**: - 创建一个UDP客户端套接字,使用`socket.AF_INET`和`...
总之,C++实现的SocketServer类可以提供类似Python的便捷服务端编程体验,同时利用C++的底层控制能力和并发特性,为高性能网络应用提供基础。理解这些核心概念并能够灵活运用,对于进行跨平台的网络编程至关重要。
在这个“test_SocketServer.rar”压缩包中,包含了一个关于创建和测试Socket服务器的示例,适用于Windows平台。 Socket服务器的基本概念: Socket,也称为套接字,是网络通信中的一个抽象概念,它代表了网络上两个...
通过分析"SocketServer.rar"中的代码,我们可以更深入地了解如何使用SuperSocket搭建和管理网络服务器,以及如何处理客户端的连接和数据交换。这将有助于提升我们的网络编程能力,尤其是对于需要构建分布式系统或...
文档展示了如何使用`SocketServer`模块创建一个简单的HTTP服务器,通过定义一个请求处理器`hwRequestHandler`类,该类继承自`SocketServer.StreamRequestHandler`,并重写`handle`方法来响应HTTP请求。在这个例子中...
这个压缩包"SocketServer.zip"显然包含了一些实现特定功能的代码示例,比如加密通信、记录客户端IP地址、维护黑白名单以及针对首次不发送消息的客户端进行封锁。下面我们将深入探讨这些知识点。 1. **SocketServer...
本项目“socketServer.zip”是一个基于Node.js、Vue.js、Socket.IO和MySQL构建的小型即时聊天项目,旨在帮助开发者理解和实践相关技术。 1. **Node.js**: Node.js是一个基于Chrome V8引擎的JavaScript运行环境,以...
在`socketserver`中,有四个基本的服务器类: 1. `TCPServer`:用于处理基于TCP的同步网络通信,即面向连接的传输层协议。 2. `UDPServer`:用于处理基于UDP的同步网络通信,即无连接的传输层协议。 3. `...
1. **阅读文档**:首先,了解 `Photon.SocketServer.chm` 中的指南和API,掌握基本使用方法。 2. **环境准备**:确保系统满足 Photon Server 的运行需求,并根据 `deploy\bin_tools\7zip` 中的脚本和工具进行必要的...