有什么方法可以在Python中将数据包排队到套接字上吗?我一直在寻找类似libipq库的东西,但是找不到任何类似的东西。
以下是我想要完成的任务:
SocketException并保存试图发送的数据,同时保持其余的数据等待(在队列中?)有什么建议吗?Twisted能这么做吗?我需要牵涉到pcapy吗?我应该在C中这样做(套接字、队列等)并使用Boost来生成混合代码吗?
提前谢谢。
编辑1:
对Nick的答复:
我忽略了这样一个事实,即我将要传输的数据将是广义的、无穷无尽的--想想这个坐在ssh会话下的应用程序(我根本不想窥探数据包)。因此,传输将是双边的。我希望能够从办公室到我的家(关闭我的笔记本电脑之间),打开笔记本电脑在家里,并继续我的会话无缝。(我知道屏幕存在)。这可能会让你想知道没有代理是怎么工作的。不会的,我只是还没解释过这个设计。区块报价
使用添加的上下文,我还应该说,我不必在服务器端捕获SocketException,因为该机器将被修复(或假定是修复的)。当客户端发现它再次具有连接性时,它就会重新连接到服务器。
发布于 2009-11-24 21:35:39
我建议您实现一个应用程序协议,因此当客户端接收到数据时,它会向服务器确认它,并为每一位数据提供序列号。
然后,服务器记录客户端下一步需要的序列号,并发送。如果连接中断,那么服务器就会重做。
数据可以随时缓冲,但是我会让它简单地开始,并使用德克 (可能比list更有效)来获取开始和结束的数据。
我可能会创建一个带有序列号属性的包对象,以及一种将其及其数据序列化和取消序列化为字节流的方法(例如使用网串)。然后,您将这些数据包存储在您的设备中。当您收到客户确认并发送下一封邮件时,您就会将数据包从deque上弹出。
这样的协议有很多种情况,需要超时,而且通常调试起来很烦人。如果您想知道一些想法,请在某一天查看SMTP服务器的源代码!
至于套接字,您可以很容易地用普通的python套接字来实现它,看看它是如何实现的。如果你计划同时拥有很多客户,那么扭曲将是一个好主意。
https://stackoverflow.com/questions/1792320
复制相似问题