udp server client
Posted huyuan1004
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了udp server client相关的知识,希望对你有一定的参考价值。
简单的udp server
package main
import (
"fmt"
"net"
"time"
)
func main()
// 组织一个udp地址结构,指定服务器的ip+port
srvAddr, err := net.ResolveUDPAddr("udp","127.0.0.1:8000")
if err != nil
fmt.Println("net.ResolveUDPAddr err:",err)
return
udpConn, err := net.ListenUDP("udp",srvAddr)
if err != nil
fmt.Println("net.ListenUDP err:",err)
return
defer udpConn.Close()
fmt.Println("服务器通信sockct创建完成")
// 读取客户端的数据
buf := make([]byte, 4096)
// 返回3个值,读取到的字节数,客户端的地址,err
n, cltAddr, err := udpConn.ReadFromUDP(buf)
if err != nil
fmt.Println("udpConn.ReadFromUDP err:",err)
return
fmt.Println("读到",cltAddr,string(buf[:n]))
// 回写数据给客户端
daytime := time.Now().String()
_, err = udpConn.WriteToUDP([]byte(daytime),cltAddr)
if err != nil
fmt.Println("udpConn.WriteToUDP err:",err)
return
简单的udp client
package main
import (
"fmt"
"net"
)
func main()
conn, err := net.Dial("udp","127.0.0.1:8000")
if err != nil
fmt.Println("net.Dial err:",err)
return
defer conn.Close()
conn.Write([]byte("hello"))
buf := make([]byte, 4096)
n, err := conn.Read(buf)
if err != nil
fmt.Println("conn.Read err:",err)
return
fmt.Println("服务器回发:",string(buf[:n]))
udp server并发
package main
import (
"net"
"fmt"
"time"
)
func main()
srvAddr, err := net.ResolveUDPAddr("udp","127.0.0.1:8000")
if err != nil
fmt.Println("net.ResolveUDPAddr err:",err)
return
udpConn, err := net.ListenUDP("udp",srvAddr)
if err != nil
fmt.Println("net.ListenUDP err:",err)
return
defer udpConn.Close()
fmt.Println("服务器通信sockct创建完成")
// 读取客户端的数据
buf := make([]byte, 4096)
for
// 返回3个值,读取到的字节数,客户端的地址,err
n, cltAddr, err := udpConn.ReadFromUDP(buf) // --- 主go程读取客户端发送数据
if err != nil
fmt.Println("udpConn.ReadFromUDP err:",err)
return
fmt.Println("读到",cltAddr,string(buf[:n]))
go func ()
// 提取系统当前时间
daytime := time.Now().String() + "\n"
// 回写数据给客户端
_, err = udpConn.WriteToUDP([]byte(daytime), cltAddr)
if err != nil
fmt.Println("WriteToUDP err:", err)
return
()
以上是关于udp server client的主要内容,如果未能解决你的问题,请参考以下文章