Python - как остановить ожидание сокета recv (), если от клиента не пришло никаких данных - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь понять, как работают сокеты, и пытаюсь сделать несколько простых вещей.Мой клиент НЕ отправляет что-либо на сервер, и сервер ничего не получит.Но проблема в том, что сокет сервера всегда будет ждать ничего.Я хочу, чтобы он делал что-то еще, если нет доступных исходящих данных со стороны клиента.if statement не помогает закончить ожидание.

Server.py:

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
hostname = socket.gethostname()
host = socket.gethostbyname(hostname)
port = 9090
server.bind((host, port))
server.listen(10)
con, addr = server.accept()  
msg = con.recv(2048)
if not msg:
    con.send('hello world'.encode('utf-8'))
    con.close()
    server.close()
else:
    con.send('hi Client I received it'.encode('utf-8'))
    con.close()
    server.close()

Client.py:

import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('192.155.11.79', 9090))
data = client.recv(2048).decode('utf-8')
print('From server side: ', data)
client.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...