Quellcode durchsuchen

improved server, now it has better data handling

digital vor 8 Jahren
Ursprung
Commit
f67d572d2f
1 geänderte Dateien mit 23 neuen und 15 gelöschten Zeilen
  1. 23 15
      network/__init__.py

+ 23 - 15
network/__init__.py

@@ -47,19 +47,23 @@ class ConnHandlerBase(object):
     def handle(self, data_decoded):
         return
     def recv(self):
-        try:
-            data_received = self.socket.recv(self.block_size)
-            data_decoded = data_received.decode("utf-8")
-            if data_decoded:
-                lschat.info("Client:"+data_decoded.strip())
-                self.handle(data_decoded)
-                return True
-            else:
-                lserver.debug("connection corrupted")
-                return False
-        except Exception as e:
-            lserver.error(e, exc_info=True)
-        return False
+        data_received = self.socket.recv(self.block_size)
+        data_decoded = data_received.decode("utf-8")
+        return data_decoded
+    # def recv(self):
+    #     try:
+    #         data_received = self.socket.recv(self.block_size)
+    #         data_decoded = data_received.decode("utf-8")
+    #         if data_decoded:
+    #             lschat.info("Client:"+data_decoded.strip())
+    #             self.handle(data_decoded)
+    #             return True
+    #         else:
+    #             lserver.debug("connection corrupted")
+    #             return False
+    #     except Exception as e:
+    #         lserver.error(e, exc_info=True)
+    #     return False
     def send(self, msg):
         msg_encoded = bytes(msg, "utf-8")
         lschat.info("Server:"+msg)
@@ -195,11 +199,15 @@ class Server(object):
                         and (socket_handler in self.connection_handler) ):
                     lserver.debug("handling client connection")
                     try:
-                        if not socket_handler.recv():
-                            lserver.info("connection is broken, closing socket and removing it")
+                        data = socket_handler.recv()
+                        if not data:
+                            lserver.info("connection {} closed")
                             self.unregister_handler(socket_handler, s)
                             self.unregister_conn(conn)
                             socket_handler.close()
+                        else:
+                            lschat.info("Client:"+data_decoded.strip())
+                            socket_handler.handle(data)
                     except Exception as e:
                         lserver.error(e, exc_info=True)
                 else: