Python сокет не остановит спам - PullRequest
0 голосов
/ 11 декабря 2018

Я отправляю сообщение клиенту, но клиент не прекратит спамить сообщение

server.py

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
hostname = socket.gethostname()
hostip = socket.gethostbyname(hostname)
port = 462

server.bind((hostname, port))
server.listen(1)
print((hostip, port))

client, address = server.accept()
print("New connection!: ", address)

while True:
    data = input("Do something:")
    if data == "help":
        print("test: 'test'")
        input("Click ENTER to continue")
    elif data == "test":
        client.send("test".encode('ascii'))
    else:
        continue

client.py

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
port = 462

s.connect(('', port))
data = s.recv(1024)

while True:
    if data.decode('ascii') == "test":
        print(data.decode('ascii'))
    else:
        continue

1 Ответ

0 голосов
/ 11 декабря 2018

Вы не опубликовали полный пример, но я думаю, что я вижу, где проблема.

Где / когда вы действительно читаете / получаете данные из сокета в client.py?

Так как похоже, что вы получили данные, сохраните их в переменной «data», а затем продолжите цикл навсегда декодирование этих данных, а не чтение из сокета .

Так что я думаю, вам нужно переместить цикл while в client.py снаружи, чтобы метод чтения / получения из сокета был внутри вашего цикла, а не снаружи, как кажетсясейчас.

Редактировать: Да, из полного кода, который вы опубликовали, я вижу, что действительно, это должно решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...