设为首页 加入收藏

TOP

golang中的socket编程(三)
2023-07-23 13:29:45 】 浏览:64
Tags:golang socket 编程

package main

import (
	"fmt"
	"io"
	"net"
	"time"
)

func main() {
	server := ":8330"
	tcpAddr, err := net.ResolveTCPAddr("tcp", server)
	if err != nil {
		fmt.Println("resolve err:", err)
		return
	}

	listen, err := net.ListenTCP("tcp", tcpAddr)
	if err != nil {
		fmt.Println("listen err:", err)
		return
	}
	defer listen.Close()

	for {
		conn, err := listen.Accept()
		if err != nil {
			fmt.Println("accept err:", err)
			continue
		}

		go handler(conn)

	}
}

func handler(conn net.Conn) {

	go func() {
		for  {
			var buf = make([]byte, 1024)
			n, err := conn.Read(buf)
			if err != nil {
        // 读取到EOF,客户端关闭连接
				if err == io.EOF {
					conn.Close()
					return
				}
				fmt.Println("read err:", err)
				return
			}

			fmt.Println("read data ", n, ":", string(buf))
		}
	}()


	curTime := time.Now().String()
	_, err := conn.Write([]byte(curTime))
	if err != nil {
		fmt.Println("write err:", err)
		return
	}
	fmt.Println("send data:", curTime)

}

参考:

《极客时间:网络编程实战》

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇golang中的接口 下一篇golang中的选项模式

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目