go語言基礎 TCP程式設計 結合Goroutine 多個客戶端訪問一個伺服器
阿新 • • 發佈:2019-01-26
我們平時可以多個使用者往一個伺服器中上傳檔案,這是可以通過TCP程式設計來做到的,我們只要結合go語言的併發,就可以做到
先是伺服器
package main import ( "net" "os" //"fmt" "io" "fmt" ) func main() { tcpaddr, _ := net.ResolveTCPAddr("tcp", ":34521") //確定IP地址 listener, _ := net.ListenTCP("tcp", tcpaddr) //監聽埠 for { conn, _ := listener.Accept() //請求連線 fmt.Println("有客戶端連入",conn.RemoteAddr()) d := make([]byte, 2048) go func(conn net.Conn) { f1, _ := os.OpenFile("e:\\205.jpg", os.O_WRONLY|os.O_CREATE, 0777) for { count, err := conn.Read(d) //收到客戶端出來的檔案 開始讀 if err != nil { break } f1.Write(d[:count]) //把讀到的內容寫到檔案裡儲存下來} }(conn) conn.Close() //關閉連線 } } }
然後是客戶端
package main import ( "net" "io/ioutil" "fmt" ) func main(){ tcpaddr,_:=net.ResolveTCPAddr("tcp","192.168.31.168:34521")//確定伺服器的地址 tcpconn,_:=net.DialTCP("tcp",nil,tcpaddr)//申請連線 defer tcpconn.Close()//完事後關閉 d,_:=ioutil.ReadFile("D:\\205.jpg") //讀取本地檔案 tcpconn.Write(d) //把檔案寫給伺服器 fmt.Println(len(d)) }