拨打正在收听的同一端口的地址

时间:2017-09-20 22:09:46

标签: sockets networking go client-server p2p

我正在开发一个P2P应用程序,并希望节点既可以作为客户端,也可以作为服务器。例如,假设我使用goroutine中运行的以下代码建立一个侦听节点:

ln, _ := net.Listen("tcp", ":8080")
for { 
    conn, err := ln.Accept() 
    ..... 
}

然后,在另一个goroutine中,逻辑确定它必须联系另一个节点让它知道它的存在,比如在本地主机地址“:8081”上,它也有类似的监听循环运行。

如果我只使用net.Dial("tcp", ":8081"),它会选择要连接的随机端口号,8081上的节点会尝试联系该端口,而不是8080上的正确端口。有没有办法从net.Dial发起8080来电?是否允许这样的事情,或者听众是否会混淆并拦截net.Dial返回的套接字的通信?

1 个答案:

答案 0 :(得分:0)

如果您希望在拨出时控制本地端口,可以使用net.DialTCP