Go tcp通信

一般的網絡通信socket編程過程按照建立socket使用socket()函數,綁定socket使用bind()函數,監聽端口使用listen()函數或者連接使用connect()函數,接收使用receive()函數或者發送使用send()函數這樣一個過程。Go語言對此過程進行了封裝只需要調用net.Dial()即可。

Dial()函數原型:func Dail(net,addr string) (Conn,error)

TCP鏈接:conn, err :=net.Dail("tcp", "192.168.0.10:2100")

建立TCP鏈接來實現初步HTTP協議,通過向網絡主機發送HTTP Head請求,讀取網絡主機返回的信息,代碼如下

package main

import (

  “net"

  "os"

   "io"

   "byte"

   "fmt"

)

 func main() {

 if len(os.Args) !=2 {

      fmt.Fprintf(os.Stderr, "Usage: %s host:port",os.Args[0])

     os.Exit(1)

}

 service := os.Args[1]

 conn,err  :=net.Dail("tcp",service)

  checkError(err)

  result, err :=readFully(conn)

 checkError(err)

 fmt.Println(string(result))

 os.Exit(0)

}

 func checkError(err error) {

  if err != nil {

       fmt.Fprintf(os.Stderr, "Fatal error:%s",err.Error())

     os.Exit(1)

   }

}

  func readFully(conn net.Conn) ([ ]byte, error)  {

  defer conn.Close( )

  result := byte.NewBuffer(nil)

  var buf [512]byte

  for {

   n, err :=conn.Read(buf([0:])

   result.Write(buf[0:n])

  if err !=nil {

       if err == io.EOF {

           break

    }

     return nil,err

   }

}

 return result.Bytes(), nil

}

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章