ZMQ脚本只发送一条消息并等待完整回复

2024-05-19 03:38:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python脚本有问题,它是用来通过rcon来控制游戏服务器(Quakelive)(你可以发送命令,它们在服务器上执行,就像更改地图或密码一样)。在

游戏开发者提供了这样的脚本。它是使用ZeroMQ库编写的,但是问题是它从标准输入获取命令(首先它们进入队列,然后被发送到服务器),当stdin中没有命令时,它只等待它们。在

我想做的是只发送/执行一个命令,finishconnection和'goverearch',但是我对python和ZeroMQ还很陌生,所以我有点迷路了。在

这是脚本:https://github.com/marconett/quakelive-docker/blob/master/zmq_rcon.py。在

另外,我从测试中推断,服务器需要发送完整的回复(有时是2行,有时是10行),否则它将被挂起。在


Tags: 命令服务器脚本游戏密码标准队列stdin
1条回答
网友
1楼 · 发布于 2024-05-19 03:38:48

是的。
在^{中,REQ/REP形式模式需要回复。

首先,让我们解开这个问题的谜团。在

ZeroMQ是一段可爱的代码。如果各自的交易对手努力使用这样的正式行为,那么它的s可伸缩F普通C通信P模式名称与正在发生的情况类似。在

从第114行开始,REP/REP正在使用,其中REQ请求,REP必须回答(并且REQ-side必须接收/“读”它),然后,REQ才能向REP-端发送另一条请求消息:

    ...
    server_rep = server_ctx.socket( zmq.REP )        # ____________.REP archetype
    server_rep.bind( HOST )                          #                ^ |
    ...                                              #                | v
    client_socket_1 = client_ctx_1.socket( zmq.REQ ) # ____________.REQ archetype
    client_socket_1.connect( HOST )
    ...
    client_socket_2 = client_ctx_2.socket( zmq.REQ ) # ____________.REQ archetype
    client_socket_2.connect( HOST )

因此,不管要发送到REP的初始源数据来自stdin,来自fileIO.readline()还是来自另一个{}模式的套接字端点,{/strong>通过一个命令,发送一个的消息。在

因此,服务器端代码负责设计良好的代码,而不是您的代码。在

相关问题 更多 >

    热门问题