如何使用Golang创建UDP连接_Golang net UDPConn读写示例


Go中UDP通信无需连接,服务端用net.ListenUDP监听,客户端用net.DialUDP发起;通过ReadFromUDP/WriteToUDP收发数据报,需手动处理地址、超时、丢包等。

如何使用golang创建udp连接_golang net udpconn读写示例

Go 语言中 UDP 是无连接协议,不需“创建连接”,而是通过 net.ListenUDP 或 net.DialUDP 获取 *net.UDPConn 实例,直接进行读写。关键在于理解 UDP 的无状态特性:没有握手、没有保活、没有顺序保证,收发都基于数据报(datagram)。

监听 UDP 端口(服务端)

使用 net.ListenUDP 绑定本地地址,启动一个 UDP 服务端。它返回可读写的 *UDPConn:

  • 绑定 :8080 表示监听本机所有 IPv4/IPv6 地址的 8080 端口;若只限 IPv4,用 127.0.0.1:8080
  • ReadFromUDP 阻塞等待数据,同时返回发送方地址(*net.UDPAddr),这是回包必需的信息
  • 用 WriteToUDP 向该地址发响应,无需预先“建立连接”

示例代码片段:

conn, err := net.ListenUDP("udp", &net.UDPAddr{Port: 8080})
if err != nil {
    log.Fatal(err)
}
defer conn.Close()
<p>buf := make([]byte, 1024)
for {
n, addr, err := conn.ReadFromUDP(buf)
if err != nil {
log.Println("read error:", err)
continue
}
log.Printf("received %d bytes from %v: %s", n, addr, string(buf[:n]))
<em>, </em> = conn.WriteToUDP([]byte("pong"), addr) // 回复客户端
}

主动发起 UDP 通信(客户端)

用 net.DialUDP 可指定远端地址,返回的 *UDPConn 支持 Write 和 Read(隐式绑定到对端),适合点对点单向或简单请求-响应场景:

立即学习“go语言免费学习笔记(深入)”;

Text-To-Pokemon口袋妖怪 Text-To-Pokemon口袋妖怪

输入文本生成自己的Pokemon,还有各种选项来定制自己的口袋妖怪

Text-To-Pokemon口袋妖怪 1487 查看详情 Text-To-Pokemon口袋妖怪
  • DialUDP 第二个参数可传 nil,表示让系统自动选择本地地址和端口
  • 后续调用 Write 会默认发往 dial 时指定的目标地址
  • Read 只接收来自同一目标地址的数据(内核做了过滤),更简洁但灵活性略低

示例:

serverAddr := &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8080}
conn, err := net.DialUDP("udp", nil, serverAddr)
if err != nil {
    log.Fatal(err)
}
defer conn.Close()
<p><em>, </em> = conn.Write([]byte("ping"))
buf := make([]byte, 1024)
n, err := conn.Read(buf)
if err == nil {
log.Printf("got reply: %s", string(buf[:n]))
}

处理地址与超时控制

UDP 本身无连接,但 Go 的 UDPConn 支持设置读写超时,避免永久阻塞:

  • SetReadDeadline 和 SetWriteDeadline 接收 time.Time,常用 time.Now().Add(5 * time.Second)
  • 超时后 ReadFromUDP 或 WriteToUDP 返回 os.IsTimeout(err) == true,可重试或退出
  • 注意:每次读写前都需重新设置 deadline,它是一次性的

注意事项与常见误区

UDP 不可靠,应用层需自行处理丢包、乱序、重复等问题。Go 中还需注意:

  • 缓冲区大小要足够,否则 ReadFromUDP 会截断超过长度的数据(UDP 单包通常不超过 64KB,但实际 MTU 多为 1500 字节)
  • 并发读写需加锁或使用 goroutine + channel 分离,UDPConn 本身不是并发安全的
  • 不要误用 net.Dial(TCP 专用)或尝试对 UDP 调用 conn.Close() 后再读写——它会 panic

基本上就这些。UDP 在 Go 里轻量直接,重点是别把它当 TCP 用,也不必纠结“连接”二字。

以上就是如何使用Golang创建UDP连接_Golang net UDPConn读写示例的详细内容,更多请关注其它相关文章!


# 如何在  # 长安区企业网站推广案例  # 黄石广告营销推广招聘  # 宁波邮件推广营销  # 课件素材网站建设海报  # seo关键词排名专注火星9  # 武汉快搜营销推广怎么样  # 店铺推广一下的营销方案  # 门户网站推广软文怎么做  # 营销推广会议室效果图片  # 上海短视频seo优化引擎  # 它是  # 把它  # go  # 这是  # 布尔  # 客户端  # 服务端  # 如何使用  # 绑定  # 自己的  # 端口  # 字节  # ipv6  # golang 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: 《随手记》启用语音备注方法  Golang如何测试结构体方法_Golang reflect方法测试与调用技巧  实时数据流中高效查找最小值与最大值  花生壳内网映射新方案  12306售票时间最新规定 | 网上订票和车站窗口时间一样吗  win11如何运行chkdsk命令 Win11检查和修复磁盘逻辑错误教程【修复】  Win11怎么设置分辨率 Win11显示设置调整分辨率及刷新率修改  Golang如何使用gRPC拦截器实现日志收集_Golang gRPC拦截器日志收集实践  抄漫画官网防走失地址_抄漫画最新漫画完整版阅读入口  在Dash应用中自定义HTML标题和网站图标  《磁力猫》最好用的磁官网  解决 Vue 3 组件未定义错误:理解 createApp 与根组件的正确使用  学习通网页版课程打不开_课程无法访问时的解决方法  解决C#跨线程访问XML对象的异常 安全的并发XML处理模式  微信朋友圈怎么设置三天可见 微信朋友圈设置指定天数可见步骤【教程】  荣耀Magic6 Pro拍照成像偏暗_荣耀Magic6 Pro夜景优化  如何修改Windows截图的默认保存位置_告别C盘让桌面更整洁【教程】  J*aScript类型数组_TypedArray使用  KFC邀请码怎么使用领额外优惠_KFC邀请码输入方式与额外优惠代码获取方法  猫眼电影app如何设置电影上映提醒_猫眼电影上映提醒设置教程  快递物流路径揭秘  J*a中的值传递到底指什么_值传递模型在参数传递中的真正含义说明  Excel如何快速合并单元格内容_Excel文本合并与函数操作技巧  win11如何诊断DirectX问题 Win11运行dxdiag工具排查显卡故障【排错】  sublime如何撤销关闭的标签页_sublime重新打开已关闭文件技巧  虫虫助手如何更新游戏  c++如何掌握指针的核心用法_c++指针入门到精通指南  包子漫画在线观看入口 包子漫画网正版全集链接  QQ邮箱PC端登录页面_QQ邮箱网页版登录界面  空腹吃苹果好吗 苹果空腹摄入指南  拷贝漫画2025网页版入口 拷贝漫画官网免费看全集  OTT月报 | 2025年9月智能电视大数据报告  CodeIgniter 3 中基于 MySQL 数据高效生成动态图表教程  Python中深度嵌套字典与列表的数据提取与条件过滤指南  电脑没有声音了怎么办 电脑声音问题的全面排查与修复指南【详解】  Sublime怎么自动添加CSS前缀_Sublime安装Autoprefixer插件  抖音火山版注销账号抖音会注销吗 抖音火山版与抖音账号注销关系  J*aScript包管理器_Npm与Yarn对比  哈尔滨城市通昵称修改方法  sublime text 4如何安装_最新版sublime下载与汉化教程  C#解析来自网络的XML流数据 实时错误处理与重试机制  Win11如何分屏操作_Win11多窗口分屏技巧  《大学搜题酱》官网地址登录  以下哪一项是古代兵书三十六计中的计谋  c++如何实现一个简单的RPC框架_c++远程过程调用原理与实践  抖音官网入口快速访问 抖音网页版账号注册解析  手机远程连接电脑方法  苹果如何下载nanobanana  cad视图选项卡不见了怎么办_cad视图标签恢复显示方法  Lar*el Dusk 测试中管理浏览器权限:以剪贴板访问为例 

 2025-12-17

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.