繁体   English   中英

通过网络发送字符串

[英]Send strings over the network

这是一个简单的问题,令我惊讶的是我还没有遇到类似的问题。

我想要两个进程使用send()和receive()函数相互发送字符串(消息)。 这是一个基本示例:

# Process 1
# ... deal with sockets, connect to process 2 ...
msg = 'An arbitrarily long string\nMaybe with line breaks'
conn.send(msg)
msg = conn.receive()
if process1(msg):
    conn.send('ok')
else:
    conn.send('nok')

# Process 2
# ... deal with sockets, connect to process 1 ...
msg = conn.receive()
conn.send(process2(msg))
msg = conn.receive()
if msg == 'ok':
    print('Success')
elif msg == 'nok':
    print('Failure')
else:
    print('Protocol error')

我知道使用裸流套接字非常容易,但这仍然很麻烦且容易出错(在循环内执行多个conn.recv()并检查大小,例如HTTP或流结束标记,例如SMTP等)。

顺便说一下,只要可以有效地通过网络可靠地传送任何大小的消息,就不必使用套接字。

难道我做错了什么? 难道没有一个简单的库(Twisted AMP看起来并不简单)做到这一点吗? 我已经在互联网上搜索了几个小时,但没有成功:)

您可以使用ZeroMQ ,有一个出色的Python绑定称为pyzmq 它是一个基于消息队列的概念编写各种分布式软件的库。 最近,该项目大肆宣传,您将在网络上找到大量示例和教程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM