go tcp demo

package main

import (

"fmt"

"net"

_"io"

)

//建立函数建立协程

func process(conn net.Conn){

    defer conn.Close()

    for{

        buf := make([]byte ,1024)

        fmt.Printf("服务器等待客户端%s 发送消息 \n ",conn.RemoteAddr().String())

            n,err := conn.Read(buf)

                if err != nil {

                    fmt.Print("客户端退出")

                    return          //!!!

                }

            //显示客户端发送内容到服务器终端

            fmt.Print(string(buf[:n]))

    }


}

func main (){

    fmt.Println("服务器开启监听")

        listen,err :=net.Listen("tcp","0.0.0.0:8888")

            if err != nil{

                fmt.Printf("Filed to listen,the error is %v \n",err)

            }

        defer listen.Close()


        for{

            coon,err := listen.Accept()

                if err != nil{

                    fmt.Printf("连接失败 the error is %v \n",err)

                }else {

                    fmt.Printf("connect successful,coon is %v client IP is %v  \n",coon,coon.RemoteAddr().String())

                }

        go process(coon)


        }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、数据类型转换 https://studygolang.com/articles/10838 package m...
    蓓蓓的万能男友阅读 1,111评论 0 1
  • fmt格式化字符串 格式:%[旗标][宽度][.精度][arg索引]动词旗标有以下几种:+: 对于数值类型总是输出...
    皮皮v阅读 1,138评论 0 3
  • 本文包括udp客户端、udp服务器、tcp客户端、tcp服务器、http客户端、http服务器 net包提供了可移...
    遇见你_17be阅读 687评论 0 1
  • 谈到docker源码,其实网上有很多的源码的分析的文章,也看过一些大牛写的docker源码解读的文章,收获很大。我...
    跨界师阅读 1,364评论 2 3
  • 20190108 因为家中有事,休息了一个礼拜之后,今天第一天上班,堆积的工作一大堆,一样样处理,头有些大。 脑袋...
    心若水容万物阅读 172评论 0 2