예제 #1
0
파일: test.py 프로젝트: hw233/twisted_zdzl
def connToServer():
    #创建一个socket连接到127.0.0.1:5200,并发送内容
    connMain = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    connMain.connect(("127.0.0.1", 5201))
    tCiphertext = tDataManage.textToCiphertext("get|test")
    connMain.send(tCiphertext)

    #等待主服务端返回子服务器的端口号,并去连接新的子服务器
    rev = connMain.recv(1024)
    print 'get server msg:' + str(rev)
    tText = tDataManage.ciphertextToText(rev)
    print 'get son-server tText:' + str(tText)
    ##连接子服务器
    connSon = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    connSon.connect(("127.0.0.1", int(tText)))

    tMessageDict = {
        "user": "******",
        "content": "request-broadcast|Hello world!"
    }
    #tCiphertext = tDataManage.textToCiphertext(tMessageDict)
    tSendData = "request-broadcast|Hello world!!!"
    tCiphertext = tDataManage.textToCiphertext(tSendData)
    connSon.send(tCiphertext)
    #connSon.send("request-broadcast|Hello world!!!")
    while True:
        rev = connSon.recv(1024)
        print 'get son-server msg:' + str(rev)
        if rev:
            tText = tDataManage.ciphertextToText(rev)
            print 'get son-server tText:' + str(tText)
예제 #2
0
 def dataReceived(self, data):
     print '===========Mainserver-Get data=========:' + str(data)
     tText = tDataManage.ciphertextToText(data)
     print '===========Mainserver-Get tText=========:' + str(tText)
     tMsgList = tText.split('|')
     if tMsgList[0] == 'get':  #获取连接(由子客户端传来)
         #将按连接数进行由小到大排序
         tMin = sorted(openserver.PORTNUM.items(), key=lambda d: d[1])
         print "(tMinPort, tMinNum) = (%s, %s)", (tMin[0][0], tMin[0][1])
         #所有进程最小连接数与设的上限相比较,达到开启新进程
         if tMin[0][1] >= constant.SON_CONN_MAX_NUM:
             #开启新进程(子服务器)
             openserver.openSonServer()
             tPort = openserver.NOWPORT - 1
         else:
             #返回人数最少进程的端口
             tPort = tMin[0][0]
         tCiphertext = tDataManage.textToCiphertext(str(tPort))
         self.transport.write(tCiphertext)
         self.transport.loseConnection()
     elif tMsgList[0] == 'add':  #连接成功(由子进程传来)
         openserver.PORTNUM[int(tMsgList[1])] += 1
     elif tMsgList[0] == 'del':  #断开连接(由子进程传来)
         openserver.PORTNUM[int(tMsgList[1])] -= 1
     elif tMsgList[0] == 'request-broadcast':  #广播数据
         tSonServers = sockMana.getClients()
         if len(tSonServers):
             print "tMsgList[1]=", tMsgList[1]
             print "tMsgList[1]type=", type(tMsgList[1])
             tCiphertext = tDataManage.textToCiphertext(
                 "mainServer-broadcast|" + tMsgList[1])
             for tSonServer in tSonServers:
                 tSonServer.transport.write(tCiphertext)
예제 #3
0
 def dataReceived(self, data):
     print '===========Mainserver-Get data=========:' + str(data)
     tText = tDataManage.ciphertextToText(data)
     print '===========Mainserver-Get tText=========:' + str(tText)
     tMsgList = tText.split('|')
     if tMsgList[0] == 'get': #获取连接(由子客户端传来)
         #将按连接数进行由小到大排序
         tMin = sorted(openserver.PORTNUM.items(), key=lambda d:d[1])
         print "(tMinPort, tMinNum) = (%s, %s)",(tMin[0][0], tMin[0][1])
         #所有进程最小连接数与设的上限相比较,达到开启新进程
         if tMin[0][1]>=constant.SON_CONN_MAX_NUM:
             #开启新进程(子服务器)
             openserver.openSonServer()
             tPort = openserver.NOWPORT-1
         else:
             #返回人数最少进程的端口
             tPort = tMin[0][0]
         tCiphertext = tDataManage.textToCiphertext(str(tPort))
         self.transport.write(tCiphertext)
         self.transport.loseConnection()
     elif tMsgList[0]=='add': #连接成功(由子进程传来)
         openserver.PORTNUM[int(tMsgList[1])] +=1
     elif tMsgList[0]=='del': #断开连接(由子进程传来)
         openserver.PORTNUM[int(tMsgList[1])] -=1
     elif tMsgList[0]=='request-broadcast': #广播数据
         tSonServers = sockMana.getClients()
         if len(tSonServers):
             print "tMsgList[1]=", tMsgList[1]
             print "tMsgList[1]type=", type(tMsgList[1])
             tCiphertext = tDataManage.textToCiphertext("mainServer-broadcast|" + tMsgList[1])
             for tSonServer in tSonServers:
                 tSonServer.transport.write(tCiphertext)
예제 #4
0
파일: test.py 프로젝트: soulsharepj/zdzl
def connToServer ():
    #创建一个socket连接到127.0.0.1:5200,并发送内容
    connMain = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    connMain.connect(("127.0.0.1", 5201))
    tCiphertext = tDataManage.textToCiphertext("get|test")
    connMain.send(tCiphertext)

    #等待主服务端返回子服务器的端口号,并去连接新的子服务器
    rev = connMain.recv(1024)
    print 'get server msg:' + str(rev)
    tText = tDataManage.ciphertextToText(rev)
    print 'get son-server tText:' + str(tText)
    ##连接子服务器
    connSon = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    connSon.connect(("127.0.0.1", int(tText)))
    
    tMessageDict = {
                    "user":"******",
                    "content":"request-broadcast|Hello world!"
                    }
    #tCiphertext = tDataManage.textToCiphertext(tMessageDict)
    tSendData = "request-broadcast|Hello world!!!"
    tCiphertext = tDataManage.textToCiphertext(tSendData)
    connSon.send(tCiphertext)
    #connSon.send("request-broadcast|Hello world!!!")
    while True:
        rev = connSon.recv(1024)
        print 'get son-server msg:' + str(rev)
        if rev:
            tText = tDataManage.ciphertextToText(rev)
            print 'get son-server tText:' + str(tText)
예제 #5
0
def connToServer ():
    global sockIndex
    #创建一个socket连接到127.0.0.1:5200,并发送内容
    connMain = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    connMain.connect(("127.0.0.1", 5201))
    tCiphertext = tDataManage.textToCiphertext("get|"+ str(sockIndex))
    connMain.send(tCiphertext)
    print sockIndex
    sockIndex = sockIndex + 1

    while True:
        #等待主服务端返回子服务器的端口号,并去连接新的子服务器
        tMainRev = connMain.recv(1024)
        ##连接子服务器
        if tMainRev:
            print 'get main-server ciphertext:' + str(tMainRev)
            tText = tDataManage.ciphertextToText(tMainRev)
            print 'get main-server tText:' + str(tText)
            connSon = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            connSon.connect(("127.0.0.1", int(tText)))
#            while True:
#                tSonRev = connSon.recv(1024)
#                if tSonRev:
#                    print 'get son-server msg:' + str(tSonRev)
#                stackless.schedule()

        stackless.schedule()
예제 #6
0
def connToServer():
    global sockIndex
    #创建一个socket连接到127.0.0.1:5200,并发送内容
    connMain = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    connMain.connect(("127.0.0.1", 5201))
    tCiphertext = tDataManage.textToCiphertext("get|" + str(sockIndex))
    connMain.send(tCiphertext)
    print sockIndex
    sockIndex = sockIndex + 1

    while True:
        #等待主服务端返回子服务器的端口号,并去连接新的子服务器
        tMainRev = connMain.recv(1024)
        ##连接子服务器
        if tMainRev:
            print 'get main-server ciphertext:' + str(tMainRev)
            tText = tDataManage.ciphertextToText(tMainRev)
            print 'get main-server tText:' + str(tText)
            connSon = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            connSon.connect(("127.0.0.1", int(tText)))
#            while True:
#                tSonRev = connSon.recv(1024)
#                if tSonRev:
#                    print 'get son-server msg:' + str(tSonRev)
#                stackless.schedule()

        stackless.schedule()
예제 #7
0
 def connectionLost(self, reason):
     sockMana.delClient(self)
     print 'Lost Client link sonserver port : %s' % str(tPort)
     #连接主服务器告知 有用户断开此端口
     global oConnMain
     tSendData = tDataManage.textToCiphertext("del|"+ str(tPort))
     oConnMain.transport.write(tSendData)
예제 #8
0
 def connectionLost(self, reason):
     sockMana.delClient(self)
     print 'Lost Client link sonserver port : %s' % str(tPort)
     #连接主服务器告知 有用户断开此端口
     global oConnMain
     tSendData = tDataManage.textToCiphertext("del|" + str(tPort))
     oConnMain.transport.write(tSendData)
예제 #9
0
 def connectionMade(self):
     print 'New Client link sonserver port : %s' % str(tPort)
     #空则是该服务器与主服务器的连接,保留连接对象
     #否则是由玩家连接到该服务器,告知主服务器连接了新用户
     global oConnMain
     print "oConnMain==",oConnMain
     if oConnMain:
         sockMana.addClient(self)
         tSendData = tDataManage.textToCiphertext("add|"+ str(tPort))
         oConnMain.transport.write(tSendData)
     else:
         oConnMain = self
예제 #10
0
 def connectionMade(self):
     print 'New Client link sonserver port : %s' % str(tPort)
     #空则是该服务器与主服务器的连接,保留连接对象
     #否则是由玩家连接到该服务器,告知主服务器连接了新用户
     global oConnMain
     print "oConnMain==", oConnMain
     if oConnMain:
         sockMana.addClient(self)
         tSendData = tDataManage.textToCiphertext("add|" + str(tPort))
         oConnMain.transport.write(tSendData)
     else:
         oConnMain = self
예제 #11
0
 def dataReceived(self, data):
     print 'Get data:' + str(data)
     #解析数据
     tText = tDataManage.ciphertextToText(data)
     
     #向该客户端发送数据
     #self.transport.write('your sockid is:'+ str(sockMana.getSockid(self)))
     
     tMsgList = tText.split('|')
     if tMsgList[0] == 'request-broadcast': #请求广播数据
         #将数据发送给主服务器,由主进程发送给子服务器进行全服广播
         global oConnMain
         oConnMain.transport.write(data) 
     elif tMsgList[0] =='mainServer-broadcast': #进行广播
         #广播给当下服务器所有连接的用户
         tClients = sockMana.getClients()
         print "(port , len)==(%d, %d)" % (tPort, len(tClients))
         tCiphertext = tDataManage.textToCiphertext(str(tMsgList[1]))
         for tClient in tClients:
             tClient.transport.write(tCiphertext)
예제 #12
0
    def dataReceived(self, data):
        print 'Get data:' + str(data)
        #解析数据
        tText = tDataManage.ciphertextToText(data)

        #向该客户端发送数据
        #self.transport.write('your sockid is:'+ str(sockMana.getSockid(self)))

        tMsgList = tText.split('|')
        if tMsgList[0] == 'request-broadcast':  #请求广播数据
            #将数据发送给主服务器,由主进程发送给子服务器进行全服广播
            global oConnMain
            oConnMain.transport.write(data)
        elif tMsgList[0] == 'mainServer-broadcast':  #进行广播
            #广播给当下服务器所有连接的用户
            tClients = sockMana.getClients()
            print "(port , len)==(%d, %d)" % (tPort, len(tClients))
            tCiphertext = tDataManage.textToCiphertext(str(tMsgList[1]))
            for tClient in tClients:
                tClient.transport.write(tCiphertext)