Goland Socket 服务

客户端发送消息 并接收服务端消息

package main

import (
	"fmt"
	"net"
)

func main() {
	//
	conn, err := net.Dial(`tcp`, ":8848")
	if err != nil {
		fmt.Println(`net dial err:`, err)
		return
	}
	fmt.Println(`cline 与server 建立连接成功`)
	sendData := []byte(`hellword`)

	// 向服务器发送数据
	cnt, err := conn.Write(sendData)
	if err != nil {
		fmt.Println(`conn.write err:`, err)
		return
	}
	fmt.Println(`Client ==> Server cnt:`, cnt, "data:", string(sendData))

	//接受服务器返回数据
	buf := make([]byte, 1024)

	cnt, err = conn.Read(buf)
	if err != nil {
		fmt.Println(`conn read err :`, err)
		return
	}
	fmt.Println("Client <=== Server ,cnt:", cnt, "data", string(buf[0:cnt]))

}

单个服务监听

package main

import (
	"fmt"
	"net"
	"strings"
)

func main() {
	ip := "127.0.01"
	port := 8848
	// 创建监听
	address := fmt.Sprintf(`%s:%d`, ip, port)

	listener, err := net.Listen(`tcp`, address)
	if err != nil {
		fmt.Println(`net.listen err :`, err)
		return
	}
	fmt.Println(`监听中`)
	conn, err := listener.Accept()
	if err != nil {
		fmt.Println(`listener.Accept err:`, err)
		return
	}
	fmt.Println(`建立连接成功`)

	//创建容器 接受读取到到数据
	buf := make([]byte, 1024)
	cnr, err := conn.Read(buf)
	if err != nil {
		fmt.Println(`cnr err:`, err)
		return
	}
	fmt.Println(`Client ==> Server,长度`, cnr, "数据:", string(buf[0:cnr]))

	//将数据转换成大写
	upperData := strings.ToUpper(string(buf))
	cnr, err = conn.Write([]byte(upperData))
	fmt.Println(`Clinet <====Server,长度`, cnr, "数据:", upperData)

	// 关闭
	conn.Close()

}

多个socket 服务端监听

package main

import (
	"fmt"
	"net"
	"strings"
)

// socket servers 多个连接
func main() {
	ip := "127.0.01"
	port := 8848
	// 创建监听
	address := fmt.Sprintf(`%s:%d`, ip, port)

	listener, err := net.Listen(`tcp`, address)
	if err != nil {
		fmt.Println(`net.listen err :`, err)
		return
	}
	for {
		fmt.Println(`监听中`)
		conn, err := listener.Accept()
		if err != nil {
			fmt.Println(`listener.Accept err:`, err)
			return
		}
		fmt.Println(`建立连接成功`)
		go handleFunc(conn)
	}

}

func handleFunc(conn net.Conn) {
	//创建容器 接受读取到到数据
	buf := make([]byte, 1024)
	cnr, err := conn.Read(buf)
	if err != nil {
		fmt.Println(`cnr err:`, err)
		return
	}
	fmt.Println(`Client ==> Server,长度`, cnr, "数据:", string(buf[0:cnr]))

	//将数据转换成大写
	upperData := strings.ToUpper(string(buf))
	cnr, err = conn.Write([]byte(upperData))
	fmt.Println(`Clinet <====Server,长度`, cnr, "数据:", upperData)

	// 关闭
	_ = conn.Close()
}

posted @ 2022-08-10 21:34  Bo-Hong  阅读(64)  评论(0编辑  收藏  举报