美文网首页
Go语言 网络编程

Go语言 网络编程

作者: Jaeyok | 来源:发表于2020-11-28 10:49 被阅读0次

TCP编程

服务器端代码

package main

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

func process(conn net.Conn){
    //循环接收数据
    defer conn.Close()

    for{

        buf := make([]byte,1024)
        //等待客户端发送信息
        fmt.Println("服务器在等待输入",conn.RemoteAddr().String())
        n,err :=conn.Read(buf) //没有客户端write发送,阻塞
        if err !=nil{
            fmt.Println("服务器端Read err", err)
            return
        }

        if err == io.EOF{
            fmt.Println("客户端退出")
            return
        }
        //显示客户端发送的内容
        fmt.Print(string(buf[:n]))
    }
}


func main(){

    listen, err :=net.Listen("tcp","127.0.0.1:8888")
    if err != nil{
        fmt.Println("Listen Error=",err)
        return
    }

    defer listen.Close()//

    for {

        fmt.Println("等待连接")
        conn,err := listen.Accept()

        if err !=nil{
            fmt.Println("Accept 出错了")
        }else {
            fmt.Println("Accet success=%v",conn)
            fmt.Println("客户端IP",conn.RemoteAddr().String())

        }

        go process(conn)

    }

    fmt.Printf("Listen=%v",listen)



}

客户端代码

package main

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

func main(){

   conn, err:=net.Dial("tcp", "127.0.0.1:8888")
    if err != nil{
        fmt.Println("Dial失败=",err)
        return
    }
    fmt.Println("conn成功",conn)

    reader :=bufio.NewReader(os.Stdin)//标准输入
    //从终端读取一行数据,发送给服务器
    line, err :=reader.ReadString('\n')
    if err !=nil{
        fmt.Println("read err", err)
    }
    //将Line发送
    n,err:=conn.Write([]byte(line))
  if err !=nil{
    fmt.Println("conn write err",err)
  }
  fmt.Println("客户端发送了",n)
}

客户端循环输入,输入exit结束

Server代码

package main

import (
    "fmt"
    "net"
)

func process(conn net.Conn){
    //循环接收数据
    defer conn.Close()

    for{

        buf := make([]byte,1024)
        //等待客户端发送信息
        fmt.Println("服务器在等待输入",conn.RemoteAddr().String())
        n,err :=conn.Read(buf) //没有客户端write发送,阻塞
        if err !=nil{
            fmt.Println("服务器端Read err", err)
            return
        }

        //显示客户端发送的内容
        fmt.Print(string(buf[:n]))
    }
}

func main(){

    listen, err :=net.Listen("tcp","127.0.0.1:8888")
    if err != nil{
        fmt.Println("Listen Error=",err)
        return
    }

    defer listen.Close()//

    for {

        fmt.Println("等待连接")
        conn,err := listen.Accept()

        if err !=nil{
            fmt.Println("Accept 出错了")
        }else {
            fmt.Println("Accet success=%v",conn)
            fmt.Println("客户端IP",conn.RemoteAddr().String())

        }

        go process(conn)

    }

    fmt.Printf("Listen=%v",listen)
}

Client代码

package main

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

func main(){

   conn, err:=net.Dial("tcp", "127.0.0.1:8888")
    if err != nil{
        fmt.Println("Dial失败=",err)
        return
    }
    fmt.Println("conn成功",conn)

    reader :=bufio.NewReader(os.Stdin)//标准输入
    for {
        //从终端读取一行数据,发送给服务器
        line, err := reader.ReadString('\n')
        if err != nil {
            fmt.Println("read err", err)
        }

        //如果输入为exit退出

        line=strings.Trim(line,"\r\n")
        if line =="exit"{
            fmt.Println("客户端退出")
            break
        }
        //将Line发送
        n, err := conn.Write([]byte(line+"\n"))
        if err != nil {
            fmt.Println("conn write err", err)
        }
        fmt.Println("客户端发送了", n)

    }

}

相关文章

  • Go语言 网络编程

    TCP编程 服务器端代码 客户端代码 客户端循环输入,输入exit结束 Server代码 Client代码

  • go语言学习

    基础 go的学习,感谢Go By Example、go网络编程与go语言标准库随着学习的深入,此文章持续更新......

  • Go语言的网络编程

    socket编程 Socket是BSD UNIX的进程通信机制,通常也称作”套接字”,用于描述IP地址和端口,是一...

  • Go 语言学习技巧和编程思维

    Go 语言学习技巧和编程思维 一、了解 Go 语言 了解 Go 语言背景 学习 Go 语言,首先要了解 Go 语言...

  • Go语法指南

    出处---Go编程语言 欢迎来到 Go 编程语言指南。本指南涵盖了该语言的大部分重要特性 Go 语言的交互式简介,...

  • GO语言能否取代C/C++呢?它们的区别在哪呢?

    前言: 随着网络技术的发展,有越来越多的编程语言出现,虽然老牌编程语言势头仍然强劲,不过也难以抵挡像GO语言这样的...

  • 48.Go语言书籍

    Go语言圣经(中文版) Go语言高级编程(Advanced Go Programming https://godo...

  • Go语言入坑

    GO语言基础 认识并安装GO语言开发环境 Go语言简介 Go语言是谷歌2009年发布的第二款开源编程语言 go语言...

  • Go语言核心编程(临时发布版)

    Go语言核心编程 原创者:文思 一、认识Go语言 1...

  • QOR,用Go语言快速搭建CMS和电子商务的库

    Go语言,兼具语法简单、高并发、高性能的特点,在网络编程领域受到欢迎。(Go语言的介绍很多,就不再赘述,还不了解G...

网友评论

      本文标题:Go语言 网络编程

      本文链接:https://www.haomeiwen.com/subject/iprfwktx.html