我正在尝试编写一个 TCP 客户端,将 JSON RPC 发送到本地托管的 TCP 服务器。服务器应立即返回两个答复。TCP 服务器托管在端口 60000 上。
这是客户端代码的样子:
package main
import (
"fmt"
"log"
"bufio"
"net"
)
func main() {
d := net.Dialer{ }
c, err := d.Dial("tcp", "127.0.0.1:60000")
if err != nil {
log.Println(err)
return
}
data := `{"id": 1,"method":"mining.configure","params": [["version-rolling"],{"version-rolling.mask": "1fffe000","version-rolling.min-bit-count": 16}]}`
fmt.Fprintf(c, data+"\n")
for {
message, _ := bufio.NewReader(c).ReadString('\n')
fmt.Println(message)
}
}
这就是我要发送的内容(“数据”变量)
{
"id": 1,
"method":"mining.configure",
"params": [["version-rolling"],
{"version-rolling.mask": "1fffe000",
"version-rolling.min-bit-count": 16}]
}
这是预期的回复:
{"error":null,"id":1,"result":{"version-rolling":true,"version-rolling.mask":"1fffe000"}}
{"id":null,"method":"mining.set_version_mask","params":["1fffe000"]}
大多数时候,我只得到第一个响应(结果为“字段”),而没有第二个具有“方法”字段的 JSON。有时我会两者兼得。
但这是通常的回答:
{"error":null,"id":1,"result":{"version-rolling":true,"version-rolling.mask":"1fffe000"}}
我知道当代码变得像这样不确定时,这是因为发生了异步问题。但是我遇到的每个新手教程都讲授了这种用于编写 TCP 客户端的确切结构。它缺少什么?我已经使用带有 Twisted 框架的 Python 对服务器进行了广泛的相同 RPC 调用测试,并且我在 100% 的时间内都得到了回复。这使我确定问题出在我的客户端代码中,而不是服务器中。
holdtom
墨色风雨
随时随地看视频慕课网APP
相关分类