zoukankan      html  css  js  c++  java
  • Go网络编程UDP

    package main
    
    import (
    	"fmt"
    	"net"
    	"strings"
    )
    
    // UDP server
    
    func main() {
    	//源码:func ListenUDP(network string, laddr *UDPAddr) (*UDPConn, error) {
    	conn, err := net.ListenUDP("udp", &net.UDPAddr{
    		IP:   net.IPv4(127, 0, 0, 1),
    		Port: 40000,
    	})
    	if err != nil {
    		fmt.Println("listen UDP failed,err:", err)
    		return
    	}
    	defer conn.Close()
    
    	// 不需要建立连接,直接收发数据
    	// 收数据
    	var data [1024]byte
    	for {
    		//data[:]把数组变成byte类型的切片(引用类型,存到data数组中)
    		n, addr, err := conn.ReadFromUDP(data[:]) //参数是[]byte 切片类型里面是byte(uint8)
    		if err != nil {
    			fmt.Println("read from UDP failed,err:", err)
    			return
    		}
    		fmt.Println(data[:n])
    		reply := strings.ToUpper(string(data[:n]))
    		// 发送数据
    		//[]byte(reply) 把字符串转成字节类型的切片
    		conn.WriteToUDP([]byte(reply), addr)
    	}
    } 
    package main
    
    import (
    "bufio"
    "fmt"
    "net"
    "os"
    )
    
    // UDP client
    
    func main() {
    	//拨号
    	socket, err := net.DialUDP("udp", nil, &net.UDPAddr{
    		IP:   net.IPv4(127, 0, 0, 1),
    		Port: 40000,
    	})
    	if err != nil {
    		fmt.Println("连接服务端失败,err:", err)
    		return
    	}
    	defer socket.Close()
    	var reply [1024]byte
    	reader := bufio.NewReader(os.Stdin)
    	for {
    		fmt.Print("请输入内容:")
    		msg, _ := reader.ReadString('
    ') //读到一个换行就返回数据(结束)
    		socket.Write([]byte(msg))
    		// 收回复的数据
    		n, _, err := socket.ReadFromUDP(reply[:])
    		if err != nil {
    			fmt.Println("redv reply msg failed,err:", err)
    			return
    		}
    		fmt.Println("收到回复信息:", string(reply[:n]))
    	}
    }
    
  • 相关阅读:
    Linux系统下安装jdk1.8并配置java环境
    linux常用命令
    intelliJ IDEA 中快速定位当前文件路径
    Intellij IDEA 入门之java “Hello word”
    常用SQL语句
    PictureBox的内存问题
    MDI窗体设计
    实现多态的方法三——接口
    css清除浮动方法
    三栏式布局(下)
  • 原文地址:https://www.cnblogs.com/yzg-14/p/12286647.html
Copyright © 2011-2022 走看看