go语言net包udp socket的使用
发布时间:2020-12-16 18:02:13 所属栏目:大数据 来源:网络整理
导读:udp与tcp的不同在于客户端请求方式不同,udp缺少Accept函数。 一个简单的udp客户端: package main;import ("net""log""fmt")func chkError(err error) {if err != nil {log.Fatal(err);}}func main() {//获取udpaddrudpaddr,err := net.ResolveUDPAddr("udp
udp与tcp的不同在于客户端请求方式不同,udp缺少Accept函数。 一个简单的udp客户端: package main;
import (
"net"
"log"
"fmt"
)
func chkError(err error) {
if err != nil {
log.Fatal(err);
}
}
func main() {
//获取udpaddr
udpaddr,err := net.ResolveUDPAddr("udp4","127.0.0.1:8080");
chkError(err);
//连接,返回udpconn
udpconn,err2 := net.DialUDP("udp",nil,udpaddr);
chkError(err2);
//写入数据
_,err3 := udpconn.Write([]byte("clientrn"));
chkError(err3);
buf := make([]byte,256);
//读取服务端发送的数据
_,err4 := udpconn.Read(buf);
chkError(err4);
fmt.Println(string(buf));
}
udp服务端代码: package main;
import (
"net"
"log"
"fmt"
)
func chkError(err error) {
if err != nil {
log.Fatal(err);
}
}
func clientHandle(conn *net.UDPConn) {
defer conn.Close();
buf := make([]byte,256);
//读取数据
//注意这里返回三个参数
//第二个是udpaddr
//下面向客户端写入数据时会用到
_,udpaddr,err := conn.ReadFromUDP(buf);
if err != nil {
return;
}
fmt.Println(string(buf));
conn.WriteToUDP([]byte("hello,client rn"),udpaddr);
}
func main() {
udpaddr,"127.0.0.1:8080");
chkError(err);
//监听端口
udpconn,err2 := net.ListenUDP("udp",udpaddr);
chkError(err2);
//udp没有对客户端连接的Accept函数
for {
clientHandle(udpconn);
}
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |