2013-09-29 49 views
1

下面是一个简单的问题,我很惊讶我还没有遇到类似的问题。通过网络发送字符串

我希望两个进程通过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等)。

顺便说一句,它不一定需要使用套接字,只要能够有效地通过网络可靠地传输任何大小的消息。

我做错了什么?是不是有一个简单的库(扭曲的AMP看起来不简单)做到这一点?我一直在搜索互联网几个小时没有成功:)

回答

1

您可以使用ZeroMQ,有一个很好的Python绑定,称为pyzmq。 它是一个基于消息队列的 概念编写各种分布式软件的库。 这个项目最近引起了很多炒作,你会在网上找到大量的例子和教程。

+0

正是我需要的,谢谢!以下是我认为我将使用的文档(供任何人看到此问题):https://learning-0mq-with-pyzmq.readthedocs.org/en/latest/pyzmq/patterns/pair.html – bbc