46 | 访问网络服务
郝林
该思维导图由 AI 生成,仅供参考
你真的很棒,已经跟着我一起从最开始初识 Go 语言,一步一步地走到了这里。
在这之前的几十篇文章中,我向你一点一点地介绍了很多 Go 语言的核心知识,以及一些最最基础的标准库代码包。我想,你已经完全有能力独立去做一些事情了。
为了激发你更多的兴趣,我还打算用几篇文章来说说 Go 语言的网络编程。不过,关于网络编程这个事情,恐怕早已庞大到用一两本专著都无法对它进行完整论述的地步了。
所以,我在这里说的东西只能算是个引子。只要这样能让你产生想去尝试的冲动,我就很开心了。
前导内容:socket 与 IPC
人们常常会使用 Go 语言去编写网络程序(当然了,这方面也是 Go 语言最为擅长的事情)。说到网络编程,我们就不得不提及 socket。
socket,常被翻译为套接字,它应该算是网络编程世界中最为核心的知识之一了。关于 socket,我们可以讨论的东西太多了,因此,我在这里只围绕着 Go 语言向你介绍一些关于它的基础知识。
所谓 socket,是一种 IPC 方法。IPC 是 Inter-Process Communication 的缩写,可以被翻译为进程间通信。顾名思义,IPC 这个概念(或者说规范)主要定义的是多个进程之间,相互通信的方法。
这些方法主要包括:系统信号(signal)、管道(pipe)、套接字 (socket)、文件锁(file lock)、消息队列(message queue)、信号灯(semaphore,有的地方也称之为信号量)等。现存的主流操作系统大都对 IPC 提供了强有力的支持,尤其是 socket。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了Go语言网络编程的核心知识,重点围绕socket和IPC展开讨论。首先介绍了socket作为IPC方法的重要性,以及在Go语言中的应用。文章详细介绍了Go语言对IPC的支持,包括对系统信号、管道和套接字的API。特别强调了`net`代码包中的程序实体直接或间接使用了`syscall.Socket`函数,展示了Go语言对不同操作系统的适配能力。此外,文章还通过具体问题解答的方式,介绍了`net.Dial`函数的参数`network`的可选值,涵盖了TCP、UDP和Unix通信域下的不同协议。总体而言,本文为读者提供了对Go语言网络编程核心知识的深入了解,为进一步学习和实践奠定了基础。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 语言核心 36 讲》,新⼈⾸单¥59
《Go 语言核心 36 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(19)
- 最新
- 精选
- 嘎嘎net.Conn接口提供了SetDeadline, SetReadDeadline, SetWriteDeadline;调用SetDeadline方法等于同时调用了后两个方法,因为其最总调用的setDeadlineImpl(fd, t, 'r'+'w') 对读和写都设置了超时时间。
作者回复: 对的。
2019-04-0415 - NulI今天是教师节,祝郝老师节日快乐!
作者回复: 谢谢!
2019-09-104 - Lane请问老师:golang内置的是epoll还是select。不像我们自主编写的时候会显示的调用select或者epoll、libevent之类的
作者回复: Linux下的话是epoll。
2018-11-274 - ipfs老师您好,我工作多年,现在准备学习go语言进入区块链,现在想努力学习下网络编程,您有网络开发课程吗?或书籍,亦或者推荐的资料,谢谢
作者回复: 你好,我目前没有搞网络开发课程。搞网络编程的话先熟悉熟悉网络协议吧。
2019-01-123 - Spiderspiders它是一种有数消息边界但没有逻辑连接的非可靠 socket 类型,我们熟知的基于 UDP 协议的网络通信就属于此类。 这里多了一个数,应该是有消息边界,而不是有数消息边界
作者回复: 我已经提给编辑了,谢谢!
2019-04-052 - jxs1211go run '.\demo91 copy.go' fork/exec C:\Users\xxxxx\AppData\Local\Temp\go-build161103554\b001\exe\demo91 copy.exe: Access is denied. 请问这个应该怎么解决,网上找了都没有用,windows环境
作者回复: copy.go 是什么? 如果你要运行 demo91.go ,在那个目录下直接执行 go run demo91.go 就好了。
2021-10-122 - 春暖花开go对tcp包的粘包怎么处理的2018-11-26210
- Lane粘包难道不应该业务层去做吗2018-11-276
- My dream请老师讲一下用nginx搭建go的服务器环境嘛,因为nginx更适合处理静态文件,go更适合处理动态文件,但我不知如何下手去搭建这样的环境2018-11-2714
- 春暖花开go有没有类似jave的netty库2018-11-2633
收起评论