我是python(2.6 / 2.7)中的初学者,他已被抛入深层,为现有的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的返回数据的问题。这是一个简单的'如果数据:那么'来检查它是否有效?
第三,最后,线程。线程可以轰炸吗?如果它确实是最好的重启方式吗?
欢迎任何其他提示。
(注意:我不能使用外部库,例如扭曲等。)
答案 0 :(得分:4)
您的问题的一些答案:
if data: ...
将作为接收内容的测试,但recvfrom()
调用将会阻止,直到收到某些内容,这似乎是多余的。我还会检查SocketServer
模块和相关的UDPServer
类 - 这可能会使实现更容易。 SocketServer
是python标准库的一部分。