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)
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)
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)
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)
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()
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()
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)
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)
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
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
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)
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)