• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

go 网络编程

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

网络编程

tcp

 

1.tcp客户端服务端实现

server/server.go

package main

import (
    "fmt"
    "net"
)

/*
tcp客户端服务端实现
*/

func process(conn net.Conn){
    //这里我们循环接收客户端发送的消息
    defer conn.Close()

    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",err)
            return
        }
        //3.显示客户端发送的内容,到服务器的终端
        fmt.Print(string(buf[:n]))
    }
}

func main(){
    fmt.Println("服务器开始监听。。")
    //net.Listen("tcp","0.0.0.0:8888")
    listen,err:=net.Listen("tcp","0.0.0.0:8888")
    if err!=nil{
        fmt.Println("listen err=",err)
        return
    }
    defer listen.Close()//延时关闭listen

    //循环等待客户端连接
    for{
        //等待客户端连接
        fmt.Println("等待客户端")
        conn,err:=listen.Accept()
        if err!=nil{
            fmt.Println("Accept() en=",err)
        }else{
            fmt.Printf("Accept() suc con=%v 客户端ip=%v\n",conn,conn.RemoteAddr().String())
        }
        //这里准备一个协程,为客户端服务
        go process(conn)
    }
    fmt.Printf("listen suc=%v\n",listen)
}
View Code

client/client.go

package main

import (
    "bufio"
    "fmt"
    "net"
    "os"
    "strings"
)

func main(){
    conn,err:=net.Dial("tcp","192.168.1.107:8888")
    if err!=nil{
        fmt.Println("client dial err=",err)
        return
    }
    //功能一:客户端可以发送单行数据,然后就退出
    reader:=bufio.NewReader(os.Stdin)//os.Stdin 代表标准输入终端
for{

    //从服务端读取一行用户输入,并准备发送给服务器
    line,err:=reader.ReadString(\'\n\')
    if err!=nil{
        fmt.Println("readString err=",err)
    }
    line=strings.Trim(line,"\r\n")
    if line=="exit"{
        fmt.Println("客户端退出。。。")
        break
    }
    //再将line发送给服务器
    n,err:=conn.Write([]byte(line))
    if err!=nil{
        fmt.Println("conn.Write err=",err)
    }
    fmt.Printf("客户端发送了%d字节的数据",n)

}
}
View Code

2.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
GO语言网络编程发布时间:2022-07-10
下一篇:
Go语言入门发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap