This commit is contained in:
chai2010
2016-01-02 21:17:21 +08:00
parent 8772a9c000
commit ba03c527c0
17 changed files with 63 additions and 29 deletions

View File

@@ -3,6 +3,7 @@
網絡編程是併發大顯身手的一個領域由於服務器是最典型的需要同時處理很多連接的程序這些連接一般來自遠彼此獨立的客戶端。在本小節中我們會講解go語言的net包這個包提供編寫一個網絡客戶端或者服務器程序的基本組件無論兩者間通信是使用TCPUDP或者Unix domain sockets。在第一章中我們已經使用過的net/http包里的方法也算是net包的一部分。
我們的第一個例子是一個順序執行的時鐘服務器,它會每隔一秒鐘將當前時間寫到客戶端:
```go
gopl.io/ch8/clock1
// Clock1 is a TCP server that periodically writes the time.
@@ -92,6 +93,7 @@ func mustCopy(dst io.Writer, src io.Reader) {
}
}
```
這個程序會從連接中讀取數據併將讀到的內容寫到標準輸出中直到遇到end of file的條件或者發生錯誤。mustCopy這個函數我們在本節的幾個例子中都會用到。讓我們同時運行兩個客戶端來進行一個測試這里可以開兩個終端窗口下面左邊的是其中的一個的輸出右邊的是另一個的輸出
```
@@ -124,6 +126,7 @@ for {
}
```
現在多個客戶端可以同時接收到時間了:
```