這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
自己寫了一個 socket通訊 用golang 來寫一下 。很簡潔了 下面直接看代碼就行了。注釋寫的很詳細了。不懂下方評論
伺服器端
package mainimport ("bufio""fmt""io""net")func main() {// 使用tcp 協議 監聽本機 8080連接埠list, err := net.Listen("tcp", "127.0.0.1:8080")if err != nil {fmt.Println("網路監聽失敗!")fmt.Println(err)}//記得要關閉defer list.Close()for {//等待連結 如果有連結過來的的話 會賦值給 c ,errc, err := list.Accept()if err != nil {fmt.Println("錯誤的連結")}//有可能會有多個請求發送過來 所以這裡用並行的方式go Handle(c)}}func Handle(conn net.Conn) {defer conn.Close()//建立一個緩衝*Reader 並讀取對應的資料data, err := bufio.NewReader(conn).ReadString('\n')//如果資料讀取完 err 會變成 EOF 這個並不是 錯誤。if err != nil && err != io.EOF {fmt.Println(err.Error())}fmt.Println(data)}
用戶端
package mainimport ("fmt""net""os")func main() {//通過tcp 協議連結 本機 8080連接埠con, err := net.Dial("tcp", "127.0.0.1:8080")//如果出現錯誤 說明連結失敗if err != nil {fmt.Println("串連伺服器端失敗")fmt.Println(err.Error())os.Exit(0)}//記得關閉 defer con.Close()//開始向伺服器端發送 hellonum, write_err := con.Write([]byte("hello"))//如果寫入有問題 輸出對應的錯誤資訊if write_err != nil {fmt.Println(write_err.Error())}//如果沒有問題。顯示對應的寫入長度fmt.Println(num)}