我有一对用C和Python编写的发送方/接收方代码。客户机正在生成数据,并通过unix套接字将其发送到接收方。接收器并不总是监听套接字,因为它应该对接收到的数据执行某些操作。在
在我当前的代码中,发送方发送的所有消息都在队列中等待接收方接收,但我不希望出现这种行为。我想让发送方知道接收者现在很忙(甚至可能会引发一个错误)。那么如何将接收方的队列长度设置为零呢?在
请考虑我不希望发送或接收过程被阻塞。在
我的代码的接收者和发送者部分是:
接收器(Python):
self.app_socket = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
self.app_socket.settimeout(0.01)
self.app_socket.bind(APP_SOCKET)
def poll(self, *args):
try:
message = self.app_socket.recv(1024)
except socket.timeout:
return
发件人(C):
^{pr2}$
你不能从发送方知道接收方发生了什么。可能是接收者进程甚至还没有安排好。唯一合理的方法是从接收者回给发送者,在这里您可以等待一段时间等待这个回答,然后决定接收者是否忙。在
你需要一些方法让接收者把它的状态(读或不读)发送给发送者。 有几种IPC原语可以用于此目的。在
或者你可以自己编。 例如,接收者可以这样做:
发送者可以周期性地检查是否存在这样的情况:
^{pr2}$相关问题 更多 >
编程相关推荐