Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Go-标准库-net(二)

Go-标准库-net(二)

原创
作者头像
堕落飞鸟
发布于 2023-04-21 07:38:05
发布于 2023-04-21 07:38:05
27100
代码可运行
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏
运行总次数:0
代码可运行

UDP连接

UDP是一种无连接的协议,它不会确保数据在传输过程中的可靠性和顺序性。net包提供了一些函数和类型,用于创建和管理UDP连接。

创建UDP连接

DialUDP函数用于创建一个UDP连接。它需要指定服务器的IP地址和端口号。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conn, err := net.DialUDP("udp", nil, &net.UDPAddr{
    IP:   net.ParseIP("127.0.0.1"),
    Port: 8080,
})
if err != nil {
    // 处理错误
}
defer conn.Close()

// 向服务器发送数据
_, err = conn.Write([]byte("Hello, World!"))
if err != nil {
    // 处理错误
}

// 从服务器接收数据
buf := make([]byte, 1024)
n, addr, err := conn.ReadFromUDP(buf)
if err != nil {
    // 处理错误
}
fmt.Println("从", addr.String(), "接收到的数据为:", string(buf[:n]))

在上面的示例中,我们创建了一个UDP连接,并向服务器发送了一条消息。然后,我们从服务器接收了一条响应,并打印出了响应的来源地址。

监听UDP连接

ListenUDP函数用于在指定的IP地址和端口上监听UDP连接。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ln, err := net.ListenUDP("udp", &net.UDPAddr{
    IP:   net.ParseIP("127.0.0.1"),
    Port: 8080,
})
if err != nil {
    // 处理错误
}
defer ln.Close()

// 从客户端接收数据
buf := make([]byte, 1024)
n, addr, err := ln.ReadFromUDP(buf)
if err != nil {
    // 处理错误
}
fmt.Println("从", addr.String(), "接收到的数据为:", string(buf[:n]))

// 向客户端发送数据
_, err = ln.WriteToUDP([]byte("Hello, Client!"), addr)
if err != nil {
    // 处理错误
}

在上面的示例中,我们创建了一个UDP监听器,并等待客户端连接。一旦客户端连接成功,我们就从客户端接收了一条消息,并向客户端发送了一条响应。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Go net 包的使用
对于 IP、TCP、UDP、socket 等协议,封装了下列函数返回对应协议的连接
dandelion1990
2023/12/31
1870
Go net 包的使用
学习go语言编程之网络编程
Golang语言标准库对Socket编程进行了抽象,无论使用什么协议建立什么形式的连接,都只需要调用net.Dial()即可。
编程随笔
2023/10/15
2970
golang 源码分析(24)毒品
用户数据报协议(User Datagram Protocol,缩写为UDP),又称用户数据报文协议,是一个简单的面向数据报(package-oriented)的传输层协议,正式规范为RFC 768。UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。UDP在IP数据报的头部仅仅加入了复用和数据校验。
golangLeetcode
2022/08/02
1.1K0
Go Socket 编程示例(TCP、Unix 及 UDP)
Socket 是一种操作系统提供的进程间通信机制. 在操作系统中, 通常会为应用程序提供一组应用程序接口, 称为套接字接口(Socket API). 注意的是, Socket API 本身不负责通信, 它仅提供基础函数供应用层调用, 底层通信一般由 TCP, Unix 或 UDP 实现.
Power
2025/04/02
650
Go 语言使用 net 包实现 Socket 网络编程
友情提示:此篇文章大约需要阅读 10分钟12秒,不足之处请多指教,感谢你的阅读。订阅本站
Meng小羽
2020/05/26
1.6K0
Go 语言使用 net 包实现 Socket 网络编程
golang 源码分析(27)p2p udp 打洞
我们平常使用的一般都为私有ip,但是私有ip之间是不能直接通信的,如果要进行通信只能通过公网上的服务器进行数据的转发,难道我们每次发送数据都要经过公网上的服务器转发吗?也不是不可以,但是服务器的承受能力就会大大增加。此时就需要我们的打洞技术的出现了,打洞的出现解决了私有ip之间直接通信的问题(还是需要经过一次公网服务器)
golangLeetcode
2022/08/02
8741
Go语言实现UDP通信
UDP协议(User Datagram Protocol)中文名称是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,不需要建立连接就能直接进行数据发送和接收,属于不可靠的、没有时序的通信,但是UDP协议的实时性比较好,通常用于视频直播相关领域。
ccf19881030
2020/10/26
1.9K0
go: 如何编写一个正确的udp服务端
udp的服务端有一个大坑,即如果收包不及时,在系统缓冲写满后,将大量丢包。 在网上通常的示例中,一般在for循环中执行操作逻辑。这在生产环境将是一个隐患。 go强大简易的并发能力可以用在处理udp数据上。
超级大猪
2022/11/29
7120
Golang语言 Socket
1. Socket 简介 常用的 Socket 类型有两种:流式 Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。 流式是一种面向连接的 Socket,针对于面向连接的 TCP 服务应用; 数据报式 Socket 是一种无连接的 Socket,对应于无连接的 UDP 服务应用 2. 网络中的进程之间如何通过 Socket 通信呢? 网络层的“ip 地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用 三元组(ip 地址,
李海彬
2018/03/21
7740
基于Go的网络基础知识笔记
Lemon黄
2024/08/27
1500
基于Go的网络基础知识笔记
内网隧道之iox
github:https://github.com/EddieIvan01/iox
红客突击队
2022/09/29
4.7K0
内网隧道之iox
go tcp 与 udp
TCP 即传输控制协议/网间协议,是一种面向连接(连接导向)的、可靠的、基于字 节流的一个端到端(Peer-to-Peer)的传输层协议.
solate
2019/07/22
1.2K0
【Go】Golang环境配置与语法基础
Go(也被称为 Golang)是一种开源的静态类型编程语言,由 Google 开发并于2009年首次公开发布。Go 语言的设计目标是提供一种简单、高效、可靠的编程语言,适用于构建大型项目的并发和网络应用。
DevFrank
2024/07/24
1050
golang源码分析:将域名解析代理到自定义域名服务器
开发过程中,好多域名是内网域名,直接改/etc/host是一个选择,但是如果不及时改回去,在切换环境的时候会给我们排查问题带来很大干扰,如果能够实现一个代理,在运行的时候走指定代理服务器,代理服务器内部将域名解析发送到自定义的域名服务器上,如果自定义域名服务器解析不了,再走默认的域名服务器,是不是很爽?
golangLeetcode
2022/12/17
1.4K0
Go-标准库-net(一)
net是Go语言中用于网络编程的标准库。它提供了一系列的函数和类型,用于创建网络连接、传输数据、处理网络协议等。在本文中,我们将详细介绍net包,并给出一些示例代码。
堕落飞鸟
2023/04/21
5390
wireshark插件开发 - 自定义协议
虽然wireshark自带了很多知名协议的解析插件,譬如HTTP、DHCP等等,然而在实际应用环境中,有不少软件之间的通信协议都是私有的,如游戏客户端和服务器之间的交互协议通常都是私有的,wireshark无法具体解析出各种字段之间的含义,只能显示接收到的二进制数据,给协议的分析和问题的排查带来了一定的困难,尤其是协议内容比较复杂时。
墨文
2021/06/21
1.4K0
wireshark插件开发 - 自定义协议
Golang udp服务端客户端例子
golang udp服务端客户端例子 服务端: package main import ( "fmt" "net" ) func main() { // 创建监听 socket, err := net.ListenUDP("udp4", &net.UDPAddr{ IP: net.IPv4(0, 0, 0, 0), Port: 8080, }) if err != nil { fmt.Println("监
李海彬
2018/03/20
2.1K0
go 的入门之路 Socket 编程
服务端监听本地IP(127.0.0.1)7777端口。当有客户端连接时,获得一个conn 对象,coon 对象是 interface Conn的实现者,
地球流浪猫
2018/08/02
4560
《Network Programming with Go》阅读重点备忘(一)
最近读了一本老外写的电子书《Network Programming with Go》,感觉写得还可以,在这里将书中一些重点记录一下以备忘。 架构 跟其它书不同,这本书的第一章主要讲了分布式系统与传统单机系统在架构层面的区别。其中有4节我觉得还挺重要的,设计分布式系统时可以多参考这些方面。 ###Points of Failure### Distributed applications run in a complex environment. This makes them much more pr
jeremyxu
2018/05/10
1.2K0
net.Dial与net.Listen
net.Listen能够监听本地端口,接收特定协议建立的连接,如果成功接收,则返回一个Listener接口
TomatoCool
2023/07/31
7590
相关推荐
Go net 包的使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档