python - 如何检测关闭的套接字或实现 Apple 推送通知提供程序

标签 python sockets

我正在开发一个简单的网络服务器,它将推送通知发送到我的 iPhone 应用程序。 我尝试过使用现有的 Python 包,但它们都遇到了这个问题:

当发送无效 token 时,Apple 将发回错误消息并关闭套接字。我需要发送大量推送通知,但如果其中一个有无效 token ,其余的将不会发送给 Apple。

目前,我的代码如下所示:

for m in messages:
    socket.send(m)

但是当第一条消息的 token 无效时,Apple 在收到第一条消息后立即关闭套接字,套接字仍然会发送所有消息而不会出现任何错误。

我无法在每条超时消息后执行recv,因为这会花费太长时间。我该怎么做才能知道套接字何时关闭并打开一个新套接字?

最佳答案

如果另一端的套接字已关闭,则其上的 recv 应返回 0 或导致错误。

<小时/>

您可以查看send发送的字节数。

<小时/>

更新:您可能想read here另一种可能性是监视套接字连接是否仍然存在。

<小时/>

Update-1:另一种方法可能是在有问题的套接字上与写入操作并行运行一个不断读取的线程......正如您提到的:时间是您的限制。

关于python - 如何检测关闭的套接字或实现 Apple 推送通知提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10468528/

相关文章:

python - 如何将两个字符串与它们之间的新行连接起来?

python - numpy 中的矩阵乘法

android - 连接两个仿真器以在它们之间建立Socket连接

c# - 接收字符串作为内存流并进行编码后,将添加更多字符

c++ - 当我写socket时return 0是什么意思?

c# - MessageWebSocket用于连接的URI可以是IP地址,对吗?

python - 如何在 python 中为不同的条形图组赋予不同的颜色?

python - 在 Python 中使用正则表达式在开头或结尾匹配模式时出现问题

python - 即使没有在 for 循环中触及它,列表也会发生变化

Java套接字读取方法返回-1