好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

go 的入门之路 Socket 编程

package main
 
import (
    "net"
    "fmt"
    "time"
    "bytes"
    "io"
)
 
func main() {
    add:=new(net.TCPAddr)
    add.IP= net.ParseIP("127.0.0.1")
    add.Port=7777
    tcpl,err:=net.ListenTCP("tcp", add)
    if err != nil {
        fmt.Println(err)
    }
    for{
        conn,err:=tcpl.Accept()
        if err != nil {
            fmt.Println(err)
        }
        handleClient(conn)
    }
}
 
func handleClient(conn net.Conn) {
    defer conn.Close()
    var buf bytes.Buffer
    _, err := io.Copy(&buf, conn)
    if err != nil {
        fmt.Println("读取错误")
    }
    fmt.Println(string(buf.Bytes()))
    data:=buf.Bytes()
    fmt.Println(len(data))
    if len(data)==0 {
        daytime := time.Now().String()
        //不需要关心返回值
        conn.Write([]byte(daytime))
    }else{
        //不需要关心返回值
        conn.Write([]byte(string(buf.Bytes())))
    }
}
package main
 
import (
    "net"
    "bytes"
    "io"
    "fmt"
)
 
func main() {
 
    add:=new(net.TCPAddr)
    add.IP= net.ParseIP("127.0.0.1")
    add.Port=7777
    conn,err:=net.DialTCP("tcp",nil,add)
 
    if err!=nil{
        fmt.Println(err)
    }
 
    //conn.Write([]byte("hello"))
    conn.CloseWrite()
    var buf bytes.Buffer
    _, err = io.Copy(&buf, conn)
    fmt.Println(string(buf.Bytes()))
 
}

查看更多关于go 的入门之路 Socket 编程的详细内容...

  阅读:92次