Go语言 之Socket简单C/S模型通信
Posted 样子2018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言 之Socket简单C/S模型通信相关的知识,希望对你有一定的参考价值。
服务端:
package main
import (
"fmt"
"net"
)
func main()
listen, err := net.Listen("tcp", ":8000")
if err != nil
fmt.Println(err.Error())
return
defer listen.Close()
fmt.Println("等待客户端连接")
conn, err := listen.Accept()
if err != nil
fmt.Println(err.Error())
return
defer conn.Close()
//读取数据
fmt.Println("开始读取数据")
b := make([]byte, 1024)
n, _ := conn.Read(b)
fmt.Println(conn.RemoteAddr().String() + ": 读到的数据为" + string(b[:n]))
Listen函数:
func Listen(network, address string) (Listener, error)
network:选用的协议:TCP、UDP, 如:“tcp”或 “udp”
address:IP地址+端口号, 如:“127.0.0.1:8000”或 “:8000”
Listener 接口:
type Listener interface
Accept() (Conn, error)
Close() error
Addr() Addr
Conn 接口:
type Conn interface
Read(b []byte) (n int, err error)
Write(b []byte) (n int, err error)
Close() error
LocalAddr() Addr
RemoteAddr() Addr
SetDeadline(t time.Time) error
SetReadDeadline(t time.Time) error
SetWriteDeadline(t time.Time) error
客户端:
package main
import (
"fmt"
"net"
)
func main()
//创建客户端
listen, err := net.Dial("tcp", ":8000")
if err != nil
fmt.Println(err.Error())
return
defer listen.Close()
var str string = "haha"
buf := []byte(str)
listen.Write(buf)
Dial函数:
func Dial(network, address string) (Conn, error)
network:选用的协议:TCP、UDP,如:“tcp”或 “udp”
address:服务器IP地址+端口号, 如:“121.36.108.11:8000”或 “www.itcast.cn:8000”
Conn 接口:
type Conn interface
Read(b []byte) (n int, err error)
Write(b []byte) (n int, err error)
Close() error
LocalAddr() Addr
RemoteAddr() Addr
SetDeadline(t time.Time) error
SetReadDeadline(t time.Time) error
SetWriteDeadline(t time.Time) error
以上是关于Go语言 之Socket简单C/S模型通信的主要内容,如果未能解决你的问题,请参考以下文章