示例#1
0
    def onRecv(self, fileno):
        if self._socket.fileno() == fileno:
            sock, addr = self._socket.accept()
            self._clients[sock.fileno()] = (sock, addr)
            KBEngine.registerReadFileDescriptor(sock.fileno(), self.onRecv)
            DEBUG_MSG("Poller::onRecv: new channel[%s/%i]" %
                      (addr, sock.fileno()))
        else:
            sock, addr = self._clients.get(fileno, None)
            if sock is None:
                return
            if addr[0] not in ('localhost', '127.0.0.1'):
                return

            data = sock.recv(2048)
            DEBUG_MSG("Poller::onRecv: %s/%i get data, size=%i" %
                      (addr, sock.fileno(), len(data)))
            DEBUG_MSG("Poller::onRecv: data = {}".format(data))
            try:
                data = data.decode()
                data = str(data).split('\r\n')
                content = json.loads(data[-1])
                self.processData(content)
            except:
                import traceback
                ERROR_MSG(traceback.format_exc())
            finally:
                KBEngine.deregisterReadFileDescriptor(sock.fileno())
                sock.close()
                del self._clients[fileno]
示例#2
0
文件: ZyfPoller.py 项目: ajue/llgame
    def onRecv(self, fileno):

        if self._socket.fileno() == fileno:

            sock, addr = self._socket.accept()
            self._clients[sock.fileno()] = (sock, addr)
            KBEngine.registerReadFileDescriptor(sock.fileno(), self.onRecv)

            DEBUG_MSG("BEGIN Poller::onRecv: new channel[%s/%i]" %
                      (addr, sock.fileno()))

        else:
            sock, addr = self._clients.get(fileno, None)
            if sock is None:
                return

            data = sock.recv(2048)

            DEBUG_MSG("BEGIN Poller::onRecv: %s/%i data size=%i" %
                      (addr, sock.fileno(), len(data)))

            self.processData(sock, addr, data)
            KBEngine.deregisterReadFileDescriptor(sock.fileno())
            sock.close()

            del self._clients[fileno]
示例#3
0
 def listen(self, address='127.0.0.1', port=80):
     assert not self._sock and port > 0
     self._sock = socket.socket()
     self._sock.bind((address, port))
     self._sock.listen(10)
     KBEngine.registerReadFileDescriptor(self._sock.fileno(),
                                         self.on_accept)
示例#4
0
    def start(self, addr, port):
        """
		virtual method.
		"""
        self._socket = socket.socket()
        self._socket.bind((addr, port))
        self._socket.listen(10)

        KBEngine.registerReadFileDescriptor(self._socket.fileno(), self.onRecv)
示例#5
0
	def start(self, addr, port):
		"""
		virtual method.
		"""
		self._socket = socket.socket()
		self._socket.bind((addr, port))
		self._socket.listen(10)
		
		KBEngine.registerReadFileDescriptor(self._socket.fileno(), self.onRecv)
 def listen(self, port, addr='0.0.0.0'):
     if not self._sock and port > 0:
         self._sock = socket.socket()
         self._sock.bind((addr, port))
         self._sock.listen(10)
         KBEngine.registerReadFileDescriptor(self._sock.fileno(),
                                             self.onAccept)
         return True
     return False
示例#7
0
    def accept(self, fd):
        if fd != self._fd:
            ERROR_MSG("Server::accept, fd[%s] is not _fd[%s]" % (fd, self._fd))
            return

        # addr = (hostaddr, port)
        sock, addr = self._socket.accept()
        # 设置为unblocking
        sock.setblocking(False)
        socket_fd = sock.fileno()
        new_conn = Connection(sock, addr, self.app)
        DEBUG_MSG("Server::accept, new connection[%s], addr[%s], fd[%s]" %
                  (id(new_conn), addr, socket_fd))
        KBEngine.registerReadFileDescriptor(socket_fd, new_conn.data_received)
 def onSend(self, fileno):
     if self._sock.fileno() == fileno:
         try:
             KBEngine.deregisterWriteFileDescriptor(self._sock.fileno())
             opt, rest, host, method, end = self._reqs_curt[1], self._reqs_curt[3], self._reqs_curt[4], "GET", "Accept: */*\r\n\r\n"
             if opt and len(opt) > 0:
                 method = 'POST'
                 end = 'Content-Type: application/x-www-form-urlencoded\r\nContent-Length: %s\r\n%s' % self.onHandlePost(opt)
             data = SEND_CNT % (method, rest, host, end)
             self._sock.send(data.encode('utf-8'))
             KBEngine.registerReadFileDescriptor(self._sock.fileno(), self.onRecv)
         except:
             self._reqs.append(self._reqs_curt)
             self.logsError()
             self.cleanSocketStatus()
示例#9
0
    def run(self, host, port, backlog=128):
        INFO_MSG("httpserver run, host[%s], post[%s]..." % (host, port))
        try:
            self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        except socket.error as e:
            ERROR_MSG("server run socket error: %s" % str(e))
            raise

        self._socket.setblocking(False)
        self._socket.bind((host, port))
        self._socket.listen(backlog)
        self._set_server_fd()
        self._host = host
        self._port = port
        KBEngine.registerReadFileDescriptor(self._fd, self.accept)
示例#10
0
	def onRecv(self, fileno):
		if self._socket.fileno() == fileno:
			sock, addr = self._socket.accept()
			self._clients[sock.fileno()] = (sock, addr)
			KBEngine.registerReadFileDescriptor(sock.fileno(), self.onRecv)
			DEBUG_MSG("Poller::onRecv: new channel[%s/%i]" % (addr, sock.fileno()))
		else:
			sock, addr = self._clients.get(fileno, None)
			if sock is None:
				return
			
			data = sock.recv(2048)
			DEBUG_MSG("Poller::onRecv: %s/%i get data, size=%i" % (addr, sock.fileno(), len(data)))
			self.processData(sock, data)
			KBEngine.deregisterReadFileDescriptor(sock.fileno())
			sock.close()
			del self._clients[fileno]
示例#11
0
	def onSend(self, task, sock, file_no):
		if sock.fileno() == file_no:
			try:
				KBEngine.deregisterWriteFileDescriptor(file_no)
				opt, rest, host, method, end = task[1], task[3], task[4], "GET", "Accept: */*\r\n\r\n"
				if opt and len(opt) > 0:
					method = 'POST'
					end = 'Content-Type: application/x-www-form-urlencoded\r\nContent-Length: %s\r\n%s' % self.onHandlePost(opt)
				data = SEND_CNT % (method, rest, host, end)
				# DEBUG_MSG("### onSend %s" % data)
				sock.send(data.encode('utf-8'))
				KBEngine.registerReadFileDescriptor(sock.fileno(), Functor(self.onRecv, task, sock))
			except:
				self._tasks.append(task)
				self.logsError()
				if not sock._closed:
					sock.close()
 def onAccept(self, fileno):
     if self._sock.fileno() == fileno:
         sock, addr = self._sock.accept()
         KBEngine.registerReadFileDescriptor(
             sock.fileno(), Functor.Functor(self.onRecv, sock, addr))
示例#13
0
 def registerRead(self):
     if self._registerRead == False:
         KBEngine.registerReadFileDescriptor(self._socket.fileno(),
                                             self.onRecv)
         self._registerRead = True
示例#14
0
 def on_accept(self, fileno):
     if self._sock.fileno() == fileno:
         sock, address = self._sock.accept()
         KBEngine.registerReadFileDescriptor(
             sock.fileno(), partial(self.on_receive, sock, address))