[转] Go 语言 TCP Socket 编程

Golang 的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到 Go 中的 net 以及其 subdirectories 下的包均是 “高频 + 刚需”,而 TCP socket 则是网络编程的主流,即便您没有直接使用到 net 中有关 TCP Socket 方面的接口,但 net/http 总是用到了吧,http 底层依旧是用 tcp socket 实现的。

网络编程方面,我们最常用的就是 tcp socket 编程了,在 posix 标准出来后,socket 在各大主流 OS 平台上都得到了很好的支持。关于 tcp programming,最好的资料莫过于 W. Richard Stevens 的网络编程圣经《UNIX 网络 编程 卷 1:套接字联网 API》 了,书中关于 tcp socket 接口的各种使用、行为模式、异常处理讲解的十分细致。Go 是自带 runtime 的跨平台编程语言,Go 中暴露给语言使用者的 tcp socket api 是建立 OS 原生 tcp socket 接口之上的。由于 Go runtime 调度的需要,golang tcp socket 接口在行为特点与异常处理方面与 OS 原生接口有着一些差别。这篇博文的目标就是整理出关于 Go tcp socket 在各个场景下的使用方法、行为特点以及注意事项。

全文:
Go 语言 TCP Socket 编程

做自己