Go 语言核心 36 讲
郝林
《Go 并发编程实战》作者,前轻松筹大数据负责人
79610 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 55 讲
Go 语言核心 36 讲
15
15
1.0x
00:00/00:00
登录|注册

46 | 访问网络服务

SOCK_RAW
SOCK_SEQPACKET
SOCK_STREAM
SOCK_DGRAM
Unix域
IPv6域
IPv4域
net.Conn接口类型
net.DialTimeout函数
net.Dial函数
syscall.Socket函数
Inter-Process Communication
DialContext方法
Timeout字段
创建socket实例并建立网络连接
解析参数
协议
类型
通信域
"unixpacket"
"unixgram"
"unix"
"udp6"
"udp4"
"udp"
"tcp6"
"tcp4"
"tcp"
net代码包
os/exec代码包
os.Pipe函数
os/signal代码包
os代码包
信号灯
消息队列
文件锁
套接字
管道
系统信号
IPC方法
net.Conn类型的值上设定读操作和写操作的超时时间
net.Dialer结构体类型
net.DialTimeout函数的超时时间含义
net.Dial函数的参数设定
net包的高层次API
syscall包的底层实体
socket的灵活性
net.Dialer结构体类型
net.DialTimeout函数的超时时间
net.DialTimeout函数的超时时间含义
syscall.Socket函数的参数
net.Dial函数的可选值
Go语言对IPC的支持
socket
思考题
总结
知识扩展
问题解析
前导内容:socket与IPC
Go语言核心之访问网络服务

该思维导图由 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
立即购买
登录 后留言

全部留言(19)

  • 最新
  • 精选
  • 嘎嘎
    net.Conn接口提供了SetDeadline, SetReadDeadline, SetWriteDeadline;调用SetDeadline方法等于同时调用了后两个方法,因为其最总调用的setDeadlineImpl(fd, t, 'r'+'w') 对读和写都设置了超时时间。

    作者回复: 对的。

    2019-04-04
    15
  • NulI
    今天是教师节,祝郝老师节日快乐!

    作者回复: 谢谢!

    2019-09-10
    4
  • Lane
    请问老师:golang内置的是epoll还是select。不像我们自主编写的时候会显示的调用select或者epoll、libevent之类的

    作者回复: Linux下的话是epoll。

    2018-11-27
    4
  • ipfs
    老师您好,我工作多年,现在准备学习go语言进入区块链,现在想努力学习下网络编程,您有网络开发课程吗?或书籍,亦或者推荐的资料,谢谢

    作者回复: 你好,我目前没有搞网络开发课程。搞网络编程的话先熟悉熟悉网络协议吧。

    2019-01-12
    3
  • Spiderspiders
    它是一种有数消息边界但没有逻辑连接的非可靠 socket 类型,我们熟知的基于 UDP 协议的网络通信就属于此类。 这里多了一个数,应该是有消息边界,而不是有数消息边界

    作者回复: 我已经提给编辑了,谢谢!

    2019-04-05
    2
  • jxs1211
    go 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-12
    2
  • 春暖花开
    go对tcp包的粘包怎么处理的
    2018-11-26
    2
    10
  • Lane
    粘包难道不应该业务层去做吗
    2018-11-27
    6
  • My dream
    请老师讲一下用nginx搭建go的服务器环境嘛,因为nginx更适合处理静态文件,go更适合处理动态文件,但我不知如何下手去搭建这样的环境
    2018-11-27
    1
    4
  • 春暖花开
    go有没有类似jave的netty库
    2018-11-26
    3
    3
收起评论
显示
设置
留言
19
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部