Простенькое клиент-серверное приложение, нужно немного подправить
Мне были поставлены задачи:
- Реализовать клиент-серверное приложение.
- Реализовать постоянный сервер (
while True) - Реализовать свой модуль с функциями
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() . Можно ли переписать как-то более элегантно, ничего не испортив?