通过网络发送字符串

时间:2013-09-29 20:04:32

标签: python sockets

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

我希望有两个进程使用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看起来并不简单)呢?我一直在互联网上搜索几个小时没有成功:)

1 个答案:

答案 0 :(得分:1)

您可以使用ZeroMQ,有一个名为pyzmq的优秀Python绑定。 它是一个用于编写各种分布式软件的库,基于 消息队列的概念。 该项目最近得到了很多炒作,你会发现很多例子和 网上的教程。