我在 C 中创建了一个套接字服务器(使用 nanomsg),它将通过 TCP 与 Python 脚本(使用标准的“套接字”实现)进行通信:
C 代码(无错误处理):
#include <nanomsg/nn.h>
#include <nanomsg/pair.h>
...
char buf[23];
...
socket = nn_socket(AF_SP, NN_PAIR);
nn_bind(socket, "tcp://127.0.0.1:xxxxx");
...
nn_recv(socket, buf, sizeof(buf), 0);
...
nn_shutdown(socket, endpoint_id);
Python代码:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("127.0.0.1", xxxxx))
s.send('Hello C this is Python')
s.close()
连接到套接字时 Python 没有错误(如果 C 应用程序正在运行)。但是,C 脚本在方法 nn_recv 中处于空闲状态,根本没有得到任何数据。我究竟做错了什么?
首先,我在 shell 中启动 C 代码(它在方法 nn_recv 中空闲)。然后我在另一个 shell 中启动 Python 并期望 C 应用程序接收数据。两个脚本都执行没有错误。