如何检查python socket recvfrom()d

2024-10-01 09:20:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python编写套接字编程。使用espython,我创建了一个到服务器的套接字,并发送了一个请求(根据服务器代码,它将以API包格式进行响应)。在接收套接字中,我需要检查数据(如果收到数据,则需要继续进行下一步操作。如果没有,我需要再次发送请求)。 发送是可以的。在接收套接字中,如果它不接收数据,它就不会转到下一条指令。。请帮帮我。在

代码:

try:

    s = socket(AF_INET, SOCK_DGRAM)
    print "socket created"

except socket.error:

    print "failed to create socket"
    sys.exit()

发送数据:

^{pr2}$

接收时:

recvpack, payload=s.recvfrom(1024)

if not recvpack:

    s.sendto("packet of data", 0, (HOST,PORT))

elif(recvpack[]="packet of data"):

    pass # continue to next operations..

在上面的接收语句中,如果recvfrom()不获取任何数据,如何检查recvpack并返回到下一个操作。。如果socket.settimeout()或{}是解决方案,那么如何使用这些。。在


Tags: ofto数据代码服务器apidatapacket
1条回答
网友
1楼 · 发布于 2024-10-01 09:20:29

如果您不介意阻塞调用,我通常使用settimeout来等待消息。如果settimeout没有及时接收到消息,它将引发异常。在

所以基本上你可以这样做:

s.settimeout(1)
try:
    recvpack, payload = s.recvfrom(1024)
except error:
    recvpack = None
if recvpack is not None:
    ...

来源:https://docs.python.org/2/library/socket.html#socket.socket.settimeout

相关问题 更多 >