GO语言学习 - 创建TCP监听

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云消息队列RocketMQ,TPS总和2000次/秒
简介: GO语言学习 - 创建TCP监听
+关注继续查看
package main

import (
    "fmt"
    "io"
    _ "io"
    "net" //做网络socket开发时,net包含有我们需要的所有方法和函数
    "os"
)

func process(conn net.Conn) {
    // 循环接收客户端发送的数据
    defer conn.Close() //关闭conn

    for {
        //创建一个新的切片
        buf := make([]byte, 1024)
        //conn.Read(buf)
        // 1.等待客户端通过conn发送信息
        // 2.如果客户端没有write[发送],那么协程就阻塞
        // fmt.Printf("服务器在等待客户端%s发送信息\n", conn.RemoteAddr().String())
        n, err := conn.Read(buf) //从conn读取
        if err != nil {
            fmt.Printf("客户端退出 err = %v\n", err)
            return
        }
        // 3.显示客户端发送的内容到服务器的终端
        fmt.Print(string(buf[:n]))
    }
}

func main() {
    file, err := os.Open("conf.txt")
    if err != nil {
        panic(err.Error())
    }
    defer file.Close()
    bytes, err := io.ReadAll(file)
    if err != nil {
        panic(err.Error())
    }

    address := string(bytes)
    fmt.Println("服务端开始监听.." + address)
    listen, err := net.Listen("tcp", address)
    if err != nil {
        fmt.Println("listen err = ", err)
        return
    }
    defer listen.Close()

    for {
        fmt.Println("等待客户端来连接..")
        conn, err := listen.Accept()
        if err != nil {
            fmt.Println("Accept() err = ", err)
        } else {
            fmt.Printf("Accept() suc con = %v 客户端ip = %v\n", conn, conn.RemoteAddr().String())
        }
        go process(conn)
    }
}
相关文章
|
1天前
|
Go
Go 语言学习:了解 const 关键字及常量声明
如果一个变量应该有一个固定的、不能改变的值,你可以使用const关键字。 const关键字将变量声明为"常量",这意味着它是不可改变和只读的。
7 0
|
3天前
|
存储 自然语言处理 Go
Go语言学习3-基本数据类型
本篇介绍 Go 语言的基本数据类型
23 1
Go语言学习3-基本数据类型
|
3天前
|
JSON Go 数据格式
go 学习
go 学习
28 2
|
21天前
|
存储 Linux Go
Go语言学习1-基础入门
本篇带大家一起走近Go语言的世界
36 1
Go语言学习1-基础入门
|
2月前
|
Java Go C语言
100天精通Golang(基础入门篇)——第2天:学习Go语言的前世今生:一门强大的编程语言的崛起
100天精通Golang(基础入门篇)——第2天:学习Go语言的前世今生:一门强大的编程语言的崛起
105 1
|
2月前
|
Rust Java Go
100天精通Golang(基础入门篇)——第1天:学习Go语言基本概念
100天精通Golang(基础入门篇)——第1天:学习Go语言基本概念
46 0
|
2月前
|
编译器 Go 开发者
100天精通Golang(基础入门篇)——第0天:安装Go语言开发环境的基础教程,带你学习Golang之Hello Go!
100天精通Golang(基础入门篇)——第0天:安装Go语言开发环境的基础教程,带你学习Golang之Hello Go!
40 0
|
2月前
|
存储 Go 数据格式
Go 语言学习之 reflect
Go 语言学习之 reflect
14 0
|
2月前
|
JSON 安全 Linux
Go 语言学习之 go tool
Go 语言学习之 go tool
15 0
|
2月前
|
Go
Go 语言学习之包
Go 语言学习之包
15 0
相关产品
云消息队列 MQ
微服务引擎
云消息队列 Kafka 版
推荐文章
更多