之前使用Python socket都从socket.socket server_bind用起,今天才注意:import SocketServer.
使用它就简化了很多:
文件名称:flash_socket.py
# -*-coding:UTF-8-*-
import SocketServer
'''使用SocketServer的tcp'''
class MyHandler(SocketServer.BaseRequestHandler):
''' MyHandler doc... '''
def handle(self):
while 1:
try:
dataReceived = self.request.recv(1024)
except:
print 'user exit'
#对flash 也许不需要
#global users
#users.remove(self.request)
break
#客户端发送的消息
print 'receive data===',id(self.request),'====',dataReceived.decode('utf-8')
if dataReceived == None:break
if dataReceived == '\0':break
if not dataReceived: break
#如果要使用中文,需要转换一下编码,当然我们把程序设置成utf-8编码了,这就不需要了
#temp = unicode("中文","gb2312").encode("utf8")
temp = dataReceived
#使用全局变量
global users
#把消息广播给用户列表
for i in users:
i.send(temp+"\0")
#self.request.send(temp+"\0")
def setup(self):
#有用户连接,就把他加入列表
global users
users.append(self.request)
print 'start'
def finish(self):
#断开就删除用户
global users
users.remove(self.request)
self.request.close()
print 'return'
#客户端列表
users = []
#
myServer = SocketServer.ThreadingTCPServer(('192.168.0.115',1234), MyHandler)
myServer.serve_forever()
近期评论