Queer European MD passionate about IT
浏览代码

Works with 2 ports

Davte 5 年之前
父节点
当前提交
c8409e12ef
共有 2 个文件被更改,包括 14 次插入7 次删除
  1. 8 6
      src/client.py
  2. 6 1
      src/server.py

+ 8 - 6
src/client.py

@@ -57,6 +57,7 @@ class Client:
                 output_data = file_to_send.read(self.buffer_chunk_size)
                 writer.write(output_data)
                 await writer.drain()
+                await asyncio.sleep(1)
 
     async def run_receiving_client(self, file_path='~/input.txt'):
         self._file_path = file_path
@@ -67,10 +68,11 @@ class Client:
         self._working = True
         with open(self.file_path, 'wb') as file_to_receive:
             while not self.stopping:
-                try:
-                    input_data = await reader.readexactly(self.buffer_chunk_size)
-                except asyncio.IncompleteReadError as e:
-                    input_data = e.partial
+                print("reading...")
+                input_data = await reader.read(self.buffer_chunk_size)
+                if not input_data:
+                    continue
+                print(input_data)
                 file_to_receive.write(input_data)
 
     def stop(self, *_):
@@ -112,9 +114,9 @@ if __name__ == '__main__':
     loop = asyncio.get_event_loop()
     client = Client(
         host='127.0.0.1',
-        port=5000,
+        port=(5000 if action == 'send' else 5001),
     )
-    loop.add_signal_handler(signal.SIGINT, client.stop, loop)
+    # loop.add_signal_handler(signal.SIGINT, client.stop, loop)
     logging.info("Starting client...")
     if action.lower() == 'send':
         loop.run_until_complete(client.run_sending_client(file_path=file_path))

+ 6 - 1
src/server.py

@@ -72,11 +72,16 @@ class Server:
     async def forward_bytes(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter):
         self._working = True
         asyncio.ensure_future(self.run_reader(reader=reader))
+
+    async def forward_bytes2(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter):
+        self._working = True
         asyncio.ensure_future(self.run_writer(writer=writer))
 
     async def run_server(self):
         reader_server = await asyncio.start_server(client_connected_cb=self.forward_bytes,
                                                    host=self.host, port=self.port)
+        writer_server = await asyncio.start_server(client_connected_cb=self.forward_bytes2,
+                                                   host=self.host, port=self.port+1)
         async with reader_server:
             await reader_server.serve_forever()
         return
@@ -107,7 +112,7 @@ if __name__ == '__main__':
         host='127.0.0.1',
         port=5000,
     )
-    loop.add_signal_handler(signal.SIGINT, server.stop, loop)
+    # loop.add_signal_handler(signal.SIGINT, server.stop, loop)
     logging.info("Starting file bridging server...")
     loop.run_until_complete(server.run_server())
     loop.close()