登录
首页 >  Golang >  Go问答

区分“Listen”和“ListenTCP”

来源:stackoverflow

时间:2024-02-20 22:36:25 225浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《区分“Listen”和“ListenTCP”》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

在Go中,net.Listen("tcp", "127.0.0.1:9090")不满足任何需求吗?为什么我们还有 net.ListenTCP("tcp", localAddress)?我认为它们在实现上非常相似。


正确答案


Listen 函数是 ListenTCPListenUnix 的通用抽象。Listen 函数将协议特定侦听器类型返回为 Listener 接口。

Listen 还提供了将字符串地址转换为 ListenTCP 和 ListenUnix 所需的特定地址类型的额外便利。

如果您手头有 TCPAddr 或需要使用 Listener 接口上不可用的 TCPListener 方法,请使用 ListenTCP。

net.Listen() 返回一个接口 net.Listener,仅保证它支持以下方法:Accept()Clos​​e()Addr()

net.ListenTCP() 返回类型 *net.TCPListener 支持上述三种方法,因此(鸭子类型)它支持 net.Listener 接口。然而,它还支持更多特定于 TCP 的功能,并且可以控制连接接受的低级方面。例如设置 SetDeadline() 等。

好了,本文到此结束,带大家了解了《区分“Listen”和“ListenTCP”》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>