Есть ли способ проверить, есть ли входящее сообщение в Python Socket - PullRequest
0 голосов
/ 19 февраля 2019

Я использую сокет в Python и пытаюсь выяснить, как проверить, есть ли входящее сообщение в коде.Мне нужно его распечатать, если есть входящее сообщение.Если нет входящего сообщения, просто напишет «НЕТ ДАННЫХ»

Я попытался проверить условие if, но оно не сработало:

import socket
import time
#AG AYARLARI
HOST = ''
PORT = 16000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((HOST,PORT))

#AGI BASLATMA


s.listen(1)
conn, addr = s.accept()
i=0
print('I:::',i)
print('Connected by', addr)
 while True:
        data=conn.recv(1024)
        if data:
            print(data)
        else:
            print (str.encode('No data'))
            break
  • Если есть сообщение, возьмите: «Сообщение»

  • Если нет: «Нет данных»

1 Ответ

0 голосов
/ 19 февраля 2019

Попробуйте использовать select:

    import select

    timeout = 10  # in seconds
    ready_sockets, _, _ = select.select(
        [conn], [], [], timeout
    )
    if ready_sockets:
        data = conn.recv(1024)
        print(data)
    else:
        print('No data')

Подробнее об этом здесь: https://docs.python.org/3.7/library/select.html

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