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("client\r\n"));
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 \r\n"),udpaddr);
}
func main() {
udpaddr,"127.0.0.1:8080");
chkError(err);
//监听端口
udpconn,err2 := net.ListenUDP("udp",udpaddr);
chkError(err2);
//udp没有对客户端连接的Accept函数
for {
clientHandle(udpconn);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。