Моя процедура:
- запустить server.py
- запустите client.py — клиент подключается и немедленно закрывает сокет.
- Сервер зависает и не закрывается
# server
from os import path as ospath
import asyncio
import socket as Socket
import logger as log
logger = log.getLogger(fileName=ospath.join('log', 'server.log'), initialize=True)
class Client():
def __init__(self, socket:Socket=None, addr:tuple=None) -> None:
self.socket = socket
self.addr = addr
self.connected = False
class App():
def __init__(self) -> None:
self.quit = False
self.clients = []
async def clientHandler(reader, writer):
logger.info('client handler starting')
async def main():
logger.info("server app starting")
app = App()
# start socket server
ipaddr = Socket.gethostbyname(Socket.gethostname())
port = 32843
logger.info(f'starting socket server ({ipaddr}:{port})')
server = await asyncio.start_server(clientHandler, ipaddr, port=32843)
logger.info('waiting for client to connect...')
await asyncio.sleep(10)
logger.info('closing server')
server.close()
await server.wait_closed()
logger.info('server closed')
if __name__ == '__main__':
asyncio.run(main())
# client
import socket
dest_ip = socket.gethostbyname(socket.gethostname())
dest_port = 32843
encoder = "utf-8"
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((dest_ip, dest_port))
client_socket.shutdown(socket.SHUT_RDWR)
client_socket.close()
Подробнее здесь: https://stackoverflow.com/questions/790 ... sconnected
Мобильная версия