go語言 tcp eof Go語言TCP網路通訊

2021-10-13 17:24:05 字數 1535 閱讀 9654

tcp 工作在網路的傳輸層,它屬於一種面向連線的可靠的通訊協議。

tcp 伺服器的工作過程:

tcp 伺服器首先註冊乙個公知埠,然後呼叫 listen() 函式在這個埠上建立乙個 tcplistener 監聽物件,並在該物件上監聽客戶機的連線請求。

啟用 tcplistener 物件的 accept() 方法接收客戶機的連線請求,並返回乙個協議相關的 conn 物件,這裡就是 tcpconn 物件。

如果返回了乙個新的 tcpconn 物件,伺服器就可以呼叫該物件的 read() 方法接收客戶機發來的資料,或者呼叫 write() 方法向客戶機傳送資料了。

package mainimport(    "server")func main()
package serverimport (     "log"    "net"    "os")type server struct func newserver(address string) *server}// 開啟tcp服務func (this *server) start()        go handleconnection(conn);    }}// 連線接收func handleconnection(conn net.conn)    input := bufio.newscanner(conn)    for input.scan() }func checkerror(err error) }
客戶端的工作過程如下:

tcp 客戶機在獲取了伺服器的服務埠號和服務位址之後,可以呼叫 dialtcp() 函式向伺服器發出連線請求,如果請求成功會返回 tcpconn 物件。

客戶機呼叫 tcpconn 物件的 read() 或 write() 方法,與伺服器進行通訊活動。

通訊完成後,客戶機呼叫 close() 方法關閉連線,斷開通訊鏈路。

package mainimport(    "fmt"    "net"    "os")func main()     service := os.args[1]    tcpaddr, err := net.resolvetcpaddr("tcp", service)    checkerror(err)    conn, err := net.dialtcp("tcp", nil, tcpaddr)    checkerror(err)      raddr := conn.remoteaddr()      n, err := conn.write(byte("hello server"))    checkerror(err)      n, err = conn.read(buf[0:])    checkerror(err)    fmt.println("reply form server", raddr.string(), string(buf[0:n]))      conn.close()    os.exit(0)}func checkerror(err error) }

Go語言之GO 語言常量

相對於變數,常量是恆定不變的值,多用於定義程式執行期間不會改變的那些值。常量的宣告和變數宣告非常類似,只是把var換成了const,常量在定義的時候必須賦值。const pi 3.1415 const e 2.7182宣告了pi和e這兩個常量之後,在整個程式執行期間它們的值都不能再發生變化了。多個常...

五 go語言特性 go語言筆記

defer 呼叫乙個被 defer 的函式時在函式剛要返回之前延遲執行,當函式無論怎樣返回,某資源必須釋放時,可用這種與眾不同 但有效的處理方式。傳統的例子包括解鎖互斥或關閉檔案。package main import log func main mydefer func mydefer func ...

Go語言之Go語言網路程式設計

go語言的 net 包中有乙個 tcpconn 型別,可以用來建立 tcp 客戶端和 tcp 伺服器端間的通訊通道,tcpconn 型別裡有兩個主要的函式 func c tcpconn write b byte n int,err os.error func c tcpconn read b byt...