Go网络编程UDP
2024-10-08 09:02:34
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('\n') //读到一个换行就返回数据(结束)
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]))
}
}
最新文章
- springmvc+bootstrap+jquerymobile完整搭建案例(提供下载地址)
- .NET短距离领域通信-32feet.NET
- 【转】详细分析Java中断机制
- mvc4 部署http错误403.14 forbidden
- gcd和ex_gcd
- Mininet的内部实现原理简介
- 代理和block反向传值
- IE 8兼容:X-UA-Compatible的解释
- JDK/bin目录下的不同exe文件的用途(转)
- Java SE Eclipse中引入第三方jar及class
- java3 - 流程控制
- 画一个DIV并给它的四个角变成圆形,且加上阴影
- UML学习——类之间的关系
- 上次被人说TK不好咯,这次给你整个高大上的
- 前端——HTML
- Some beautiful Progress Bars in WPF
- 虚幻开放日2017ppt
- 关掉 ubuntu bug 报告功能
- day7大纲
- js基础学习笔记(零七)