您现在的位置是:首页 > 学习笔记 > Go语言Go语言

Golang之网络编程

冰山2019-02-25【Go语言】人已围观

简介1.协议
1.1协议
1.2典型协议
2.层与协议
2.1分层方式
3.通信过程
4.Socket编程
5.网络应用程序设计模式
5.1模式介绍
5.2优缺点
6.TCP通信 C/S模型通信
7.UDP通信 C/S模型通信
8.TCP通信并发C/S模型通信
9.UDP通信并发C/S模型通信
10.UDP与TCP的差异


      return
   }
   defer conn.Close()
   go func() {
      buf := make([]byte, 4096)
      for {
         n, err := os.Stdin.Read(buf)
         if err != nil {
            fmt.Println("read err", err)
         }
         conn.Write(buf[:n])
      }
   }()
   read := make([]byte, 4096)
   n, err := conn.Read(read)
   if err != nil {
      fmt.Println("read err", err)
      return
   }
   fmt.Println("从服务器中读取数据%s", string(read[:n]))
}
 

9.UDP通信并发C/S模型通信

 

9.1并发Server端


其实对于UDP而言,服务器不需要并发,只要循环处理客户端数据即可。客户端也等同于TCP通信并发的客户端。

package main

import (
   "net"
   "fmt"
)

func main() {
   // 创建 服务器 UDP 地址结构。指定 IP + port
   laddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8003")
   if err != nil {
      fmt.Println("ResolveUDPAddr err:", err)
      return
   }
   // 监听 客户端连接
   conn, err := net.ListenUDP("udp", laddr)
   if err != nil {
      fmt.Println("net.ListenUDP err:", err)
      return
   }
   defer conn.Close()

   for {
      buf := make([]byte, 1024)
      n, raddr, err := conn.ReadFromUDP(buf)
      if err != nil {
         fmt.Println("conn.ReadFromUDP err:", err)
         return
      }
      fmt.Printf("接收到客户端[%s]:%s", raddr, string(buf[:n]))

      conn.WriteToUDP([]byte("I-AM-SERVER"), raddr) // 简单回写数据给客户端
   }
}
 

9.2并发Client端


package main

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

func main() {
   conn, err := net.Dial("udp", "127.0.0.1")
   if err != nil {
      fmt.Println("dial err", err)
      return
   }
   defer conn.Close()
   go func() {
      buf := make([]byte, 4096)
      for {
         n, err := os.Stdin.Read(buf)
         if err != nil {
            fmt.Println("read err", err)
         }
         conn.Write(buf[:n])
      }
   }()
   read := make([]byte, 4096)
   n, err := conn.Read(read)
   if err != nil {
      fmt.Println("read err", err)
      

 6/7   首页 上一页 4 5 6 7 下一页 尾页

  • 微信扫一扫~
  • 支付宝扫一扫~

很赞哦! ()

上一篇:Go并发

下一篇:微服务(microservices)

相关文章

文章评论

本站推荐