我正在开发一个项目,我在python中有一个客户端服务器模型。我设置了一个服务器来监控请求并发回数据。 PYZMQ支持:tcp,udp,pgm,epgm,inproc和ipc。我一直在使用tcp进行进程间通信,但不知道我应该使用什么来通过Internet向服务器发送请求。我只需要放入一些东西:
socket.bind(BIND_ADDRESS)
DIAGRAM: Client Communicating over internet to server running a program
答案 0 :(得分:3)
您没有使用ipc
或inproc
进行进程间通信的任何特殊原因?
除此之外,一般来说,你可以考虑tcp
通用传播者;它并不总是最好的选择,但无论如何(只要你真的拥有IP地址)它都会有效。
以下是您在传输之间做出选择时需要了解的内容:
我的理解是,ZMQ不支持UDP,所以如果它存在,它可能是由pyzmq绑定添加的。
另外,我看了一下你的图表 - 你可能希望服务器ZMQ套接字到bind
,客户端ZMQ套接字到connect
...有一些你可能会改变这种情况的原因,但作为一般规则,服务器被认为是“可靠”对等体,客户端是“瞬态”对等体,你希望“可靠”对等体绑定,“瞬态”对等体连接
答案 1 :(得分:0)
通过互联网,TCP或UDP是通常的选择。我不知道pyzmq是否在传输协议之上有自己的传递保证。如果没有,TCP将保证所有消息的按顺序传送,而UDP可能会在网络拥塞时丢弃消息。
如果您不知道自己想要什么,TCP是最简单,最安全的选择。