У меня есть вопрос по поводу StreamReader / StreamWriter.
Чтобы упростить мой фактический код, как и следующий код (они могут выполняться). После запуска сервера запустите клиент, чтобы запросить его. Сервер не будет читать никаких данных
Код сервера:
import asyncio
loop = asyncio.get_event_loop()
async def log(reader: asyncio.StreamReader, writer: asyncio.StreamWriter):
print("Wait read")
data = await reader.read(-1)
print("<:", data)
writer.write(data)
await writer.drain()
print(">:", data)
async def link(reader: asyncio.StreamReader, writer: asyncio.StreamWriter):
asyncio.run_coroutine_threadsafe(log(reader, writer), loop)
print("Connect.")
await asyncio.sleep(1)
loop.run_until_complete(
asyncio.start_server(
link, "0.0.0.0", 1080, loop=loop
)
)
loop.run_forever()
Код клиента:
import socket
import traceback
try:
sock = socket.create_connection(("127.0.0.1", 1080))
sock.sendall(b"Hello")
print(sock.recv(1024))
sock.close()
except socket.error:
traceback.print_exc()
Я знаю, как решить эту проблему, но я хочу знать, почему эта проблема возникает.