之前使用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()

发表评论

电子邮件地址不会被公开。 必填项已用*标注