Skip to content

Commit 69ff82c

Browse files
committed
Update code
1 parent abc3961 commit 69ff82c

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

zh/08.1.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
Socket起源于Unix,而Unix基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一个实现,网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用:Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。
66

77
常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。
8+
89
## Socket如何通信
910
网络中的进程之间如何通过Socket通信呢?首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中需要互相通信的进程,就可以利用这个标志在他们之间进行交互。请看下面这个TCP/IP协议结构图
1011

@@ -71,8 +72,8 @@ func main() {
7172

7273
```Go
7374

74-
func (c *TCPConn) Write(b []byte) (n int, err os.Error)
75-
func (c *TCPConn) Read(b []byte) (n int, err os.Error)
75+
func (c *TCPConn) Write(b []byte) (int, error)
76+
func (c *TCPConn) Read(b []byte) (int, error)
7677
```
7778

7879
`TCPConn`可以用在客户端和服务器端来读写数据。
@@ -84,6 +85,7 @@ func (c *TCPConn) Read(b []byte) (n int, err os.Error)
8485
type TCPAddr struct {
8586
IP IP
8687
Port int
88+
Zone string // IPv6 scoped addressing zone
8789
}
8890
```
8991
在Go语言中通过`ResolveTCPAddr`获取一个`TCPAddr`

0 commit comments

Comments
 (0)