Я новичок в python (2.6/2.7), который был брошен в глубину, чтобы создать сетевую службу для существующего приложения python.Усиление UDP-сервера python
У меня работает UDP-сервер, который работает отлично, но я прошу помощи в том, чтобы сделать его немного более пуленепробиваемым.
Вот базовый код, который я написал, обычный стандартный котел пластины:
import sys
import socket
from threading import Thread
def handleInput():
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("127.0.0.1",5005))
# socket always binded?
while True:
data, addr = sock.recvfrom(512)
# is 'data' usable?
t=Thread(target=handleInput)
t.daemon=True
t.start()
# can thread die?
Во-первых, я понимаю, что сокет находится в некотором смысле всегда доступен, он не должен слушать, так что это не такая проблема, как неудача, и вам нужно снова подключиться. Это верно?
Во-вторых, проблема с возвращенными данными из recvfrom. Это просто ', если данные: then', чтобы проверить, действительно ли это?
В-третьих, и, наконец, нить. Может ли выпустить нить? Если это действительно лучший способ перезапустить его?
Любые другие советы приветствуются.
(Примечание: Я не могу использовать внешние библиотеки, например, скрученные и т.д.)
Что вы надеетесь выполнить с помощью кода «Thread» выше? Как бы то ни было, добавленная стоимость не добавляется помимо простого запуска 'handleInput()', но весь сценарий будет по-прежнему блокироваться, пока не будет завершен с одним клиентом. Вы надеетесь одновременно работать с несколькими «клиентами»? –
Этот код будет введен в другое приложение python, это причина для потока. Что касается параллелизма, не будут ли очереди сообщений от нескольких клиентов в очереди? – kingsaul