Go語言TCP/UDP Socket編程

來源:互聯網
上載者:User

標籤:ice   import   cps   ror   span   byte   div   Go語言   color   

1. TCP編程

TCPClient

// TCPClient project main.gopackage mainimport (    "fmt"    "net"    "os")func main() {    var buf [512]byte    if len(os.Args) != 2 {        fmt.Fprintf(os.Stderr, "Usage: %s host:port ", os.Args[0])        os.Exit(1)    }    service := os.Args[1]    tcpAddr, err := net.ResolveTCPAddr("tcp4", service)    checkErr(err)    conn, err := net.DialTCP("tcp", nil, tcpAddr)    defer conn.Close()    checkErr(err)    rAddr := conn.RemoteAddr()    n, err := conn.Write([]byte("Hello server!"))    checkErr(err)    n, err = conn.Read(buf[0:])    checkErr(err)    fmt.Println("Reply from server ", rAddr.String(), string(buf[0:n]))    os.Exit(0)}func checkErr(err error) {    if err != nil {        fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())        os.Exit(1)    }}

TCPServer

// TCPServer project main.gopackage mainimport (    "fmt"    "net"    "os")func main() {    service := ":5000"    tcpAddr, err := net.ResolveTCPAddr("tcp4", service)    checkErr(err)    listener, err := net.ListenTCP("tcp", tcpAddr)    checkErr(err)    for {        conn, err := listener.Accept()        if err != nil {            continue        }        go handleClient(conn)    }}func checkErr(err error) {    if err != nil {        fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())        os.Exit(1)    }}func handleClient(conn net.Conn) {    defer conn.Close()    var buf [512]byte    for {        n, err := conn.Read(buf[0:])        if err != nil {            return        }        rAddr := conn.RemoteAddr()        fmt.Println("Receive from client", rAddr.String(), string(buf[0:n]))        _, err2 := conn.Write([]byte("Welcome client!"))        if err2 != nil {            return        }    }}
2. UDP編程

UPDClient

// UDPClient project main.gopackage mainimport (    "fmt"    "net"    "os")func main() {    var buf [512]byte    if len(os.Args) != 2 {        fmt.Fprintf(os.Stderr, "Usage: %s host:port ", os.Args[0])        os.Exit(1)    }    service := os.Args[1]    udpAddr, err := net.ResolveUDPAddr("udp4", service)    checkErr(err)    conn, err := net.DialUDP("udp", nil, udpAddr)    defer conn.Close()    checkErr(err)    rAddr := conn.RemoteAddr()    n, err := conn.Write([]byte("Hello server!"))    checkErr(err)    n, err = conn.Read(buf[0:])    checkErr(err)    fmt.Println("Reply from server ", rAddr.String(), string(buf[0:n]))    os.Exit(0)}func checkErr(err error) {    if err != nil {        fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())        os.Exit(1)    }}

UDPServer

// UDPServer project main.gopackage mainimport (    "fmt"    "net"    "os")func main() {    service := ":5000"    udpAddr, err := net.ResolveUDPAddr("udp4", service)    checkErr(err)    conn, err := net.ListenUDP("udp", udpAddr)    checkErr(err)    for {        handleClient(conn)    }}func checkErr(err error) {    if err != nil {        fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())        os.Exit(1)    }}func handleClient(conn *net.UDPConn) {    defer conn.Close()    var buf [512]byte    for {        n, rAddr, err := conn.ReadFromUDP(buf[0:])        if err != nil {            return        }        fmt.Println("Receive from client", rAddr.String(), string(buf[0:n]))        _, err2 := conn.WriteToUDP([]byte("Welcome client!"), rAddr)        if err2 != nil {            return        }    }}

 

Go語言TCP/UDP Socket編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.