From ca3aa5857b33bc83f8659e70fdc12de532b34243 Mon Sep 17 00:00:00 2001 From: Davte Date: Thu, 9 Apr 2020 23:05:03 +0200 Subject: [PATCH] Get client role as first line --- src/client.py | 12 ++++++++++-- src/server.py | 5 ++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/client.py b/src/client.py index dc3e31f..ff9e4a2 100644 --- a/src/client.py +++ b/src/client.py @@ -48,7 +48,11 @@ class Client: async def run_sending_client(self, file_path='~/output.txt'): self._file_path = file_path - _, writer = await asyncio.open_connection(host=self.host, port=self.port) + reader, writer = await asyncio.open_connection(host=self.host, + port=self.port) + writer.write("sender\n".encode('utf-8')) + await writer.drain() + await reader.readline() # Wait for server start signal await self.send(writer=writer) async def send(self, writer: asyncio.StreamWriter): @@ -73,7 +77,11 @@ class Client: async def run_receiving_client(self, file_path='~/input.txt'): self._file_path = file_path - reader, _ = await asyncio.open_connection(host=self.host, port=self.port) + reader, writer = await asyncio.open_connection(host=self.host, + port=self.port) + writer.write("receiver\n".encode('utf-8')) + await writer.drain() + await reader.readline() # Wait for server start signal await self.receive(reader=reader) async def receive(self, reader: asyncio.StreamReader): diff --git a/src/server.py b/src/server.py index 10b54a9..d51d288 100644 --- a/src/server.py +++ b/src/server.py @@ -87,7 +87,10 @@ class Server: Decide whether client is sender or receiver and start transmission. """ - peer_is_sender = not self.working # TODO: ask peer role + client_hello = await reader.readline() + peer_is_sender = client_hello.decode('utf-8') == 'sender\n' + writer.write("Start!\n".encode('utf-8')) # Send start signal to client + await writer.drain() self._working = True if peer_is_sender: logging.info("Sender is connecting...")