加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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);
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读