为了账号安全,请及时绑定邮箱和手机立即绑定

Go 例程及其并发问题

Go 例程及其并发问题

Go
米琪卡哇伊 2021-09-13 20:11:16
接受并连接两个单独的连接集。想和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 回答

  • 1 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信