Простенькое клиент-серверное приложение, нужно немного подправить

Мне были поставлены задачи:

  1. Реализовать клиент-серверное приложение.
  2. Реализовать постоянный сервер (while True)
  3. Реализовать свой модуль с функциями readMsg и sendMsg

Вот мой код:

client.py

import socket
from modSC import sendMsg

sock = socket.socket()
sock.connect(('localhost', 1234))
sendMsg(sock)
sock.close()

server.py

import socket
from modSC import readMsg

sizePack = 5

sock = socket.socket()
sock.bind(('', 1234))
sock.listen(1)
conn, addr = sock.accept()
readMsg(conn, sizePack)

ModSC.py

def sendMsg(sock):
    while True:
        msgData = input()

        msg = msgData.encode()
        msgLen = '%10s' % len(msg)

        sock.send(msgLen.encode())
        sock.send(msg)
        if msgData == '':
            break

def readMsg(conn, sizePack):
    while True:
        sizeMsg = int(conn.recv(10).decode())
        msg = ''

        if sizeMsg == 0:
            break

        else:
            while True:
                data = conn.recv(sizePack).decode()
                sizeMsg -= sizePack
                msg += data

                if sizeMsg - sizePack <= 0:
                    data = conn.recv(sizeMsg).decode()
                    msg += data
                    break

            print(f'msg = {msg}')

Код работает, но поставили низкую оценку. Думаю, что основная претензия к двойному while True в readMsg() . Можно ли переписать как-то более элегантно, ничего не испортив?


Ответы (0 шт):