首页 > 代码库 > go语言net包udp socket的使用

go语言net包udp socket的使用

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, err := net.ResolveUDPAddr("udp4", "127.0.0.1:8080");	chkError(err);	//监听端口	udpconn, err2 := net.ListenUDP("udp", udpaddr);	chkError(err2);	//udp没有对客户端连接的Accept函数	for {		clientHandle(udpconn);	}}

技术分享

技术分享

go语言net包udp socket的使用