接受并連接兩個單獨的連接集。想和RPC同時做。我正在嘗試在我的計算機上創建半分布式系統。我現在正在處理的代碼片段類似于代理節點,換句話說,它始終接受來自端口的客戶端連接。它還不斷接受來自不同端口的后端節點連接。我正在嘗試找到一種同時偵聽兩者并為兩者提供服務的方法。我正在使用 RPC,我嘗試這樣做的方式是這樣的:主要:func main(){ ... rpc.Register(myInterface) l, err := net.Listen("tcp", client_port) if err != nil {...} go handleClients(l) node_l, err := net.Listen("tcp", node_port) if err != nil{...} go setUpIncomingNodes(node_l, chan) for{// add nodes to a list from chan} }并發功能:// Adds clients to be connectedfunc handleClients(listener net.Listener){ for{ conn, err :=listener.Accept() if err != nil{...} // Starts up a blocking (on that thread) RPC connection go rpc.serveConn(conn) }}func setUpIncomingNodes(node_listener net.Listener, incoming_nodes chan<- net.Conn){ for{ conn, err := node_listener.Accept() if err != nil{...} incoming_nodes <- conn }}問題是它不為第一個節點提供服務,直到第二個節點出現。我不明白為什么。此外,似乎一次只能發生一個連接,但我認為 RPC 在不同的端口上提供服務(因此不會阻止它)。任何幫助都非常感謝。我嘗試遵循本教程,但我發現情況太不同了,它也使用了不同版本的 Go。我使用兩種類型的節點/連接,其中類型 A 需要通過代理服務到類型 B。
- 1 回答
- 0 關注
- 193 瀏覽
添加回答
舉報
0/150
提交
取消