自己写了一个 socket通讯 用golang 来写一下 。很简洁了 下面直接看代码就行了。注释写的很详细了。不懂下方评论
服务器端
package main import ( "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 ,err c, 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 main import ( "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() //开始向服务器端发送 hello num, write_err := con.Write([]byte("hello")) //如果写入有问题 输出对应的错误信息 if write_err != nil { fmt.Println(write_err.Error()) } //如果没有问题。显示对应的写入长度 fmt.Println(num) }
有疑问加站长微信联系(非本文作者)