golang中的udp编程
1. udp server
package main import (
"fmt"
"net"
) func main() { // udp server
listenUdp, err := net.ListenUDP("udp", &net.UDPAddr{
IP: net.IPv4(127,0,0,1),
Port: 8080,
})
if err != nil {
fmt.Println("ListenPacket fail err", err)
return
}
defer listenUdp.Close() for {
// 接收数据
var buf [1024]byte
n, addr, err := listenUdp.ReadFromUDP(buf[:])
if err != nil {
fmt.Println("ReadFromUDP fail err", err)
continue
}
fmt.Printf("接收到客户端【%v】的数据:%s\n", addr, string(buf[:n])) // 发送数据
msg := "server发送回来的数据" + string(buf[:n])
num, err := listenUdp.WriteToUDP([]byte(msg), addr)
if err != nil {
fmt.Println("WriteToUDP fail err", num, err)
continue
} } }
2. udp client
package main import (
"fmt"
"net"
"strings"
) func main() {
// udp client
udpConn, err := net.DialUDP("udp", nil, &net.UDPAddr{
IP: net.IPv4(127,0,0,1),
Port: 8080,
})
if err != nil {
fmt.Println("DialUDP fail err", err)
return
} defer udpConn.Close() for {
// 发送数据
var data string
fmt.Print("请输入要发送给服务器的数据:")
fmt.Scanln(&data)
if strings.ToUpper(data) == "Q" {
break
}
sendData := []byte(data)
_, err = udpConn.Write(sendData)
if err != nil {
fmt.Println("udp客户端Write fail err", err)
return
} // 接收数据
buf := make([]byte, 4096)
n, remoteAddr, err2 := udpConn.ReadFromUDP(buf[:])
if err2 != nil {
fmt.Println("udp客户端Read fail err", err2)
return
}
fmt.Printf("data:%v, addr:%v\n", string(buf[:n]), remoteAddr) }
}
golang中的udp编程的更多相关文章
- golang中的socket编程
0.1.索引 https://waterflow.link/articles/1664591292871 1.tcp的3次握手(建立连接) 客户端的协议栈向服务器端发送了 SYN 包,并告诉服务器端当 ...
- qt中的udp编程
UDP QUdpSocket ---> upd socket 1.创建 QUdpSocket *p = new QUdpSocket(); 2.最先接收数据一方 调用bind-> ip/p ...
- golang中的tcp编程
1. tcp server package main import ( "bufio" "fmt" "net" ) func main() ...
- 网游中的网络编程系列1:UDP vs. TCP
原文:UDP vs. TCP,作者是Glenn Fiedler,专注于游戏网络编程相关工作多年. 目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网 ...
- 网游中的网络编程3:在UDP上建立虚拟连接
目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网络编程3:在UDP上建立虚拟连接 TODO 二.在UDP上建立虚拟连接 介绍 UDP是无连接的,一 ...
- Java中的UDP协议编程
一. UDP协议定义 UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层.UDP有不提供数据报分组.组装和不能对数据包 ...
- 在Java中实现UDP协议编程(DatagramSocket/DatagramPacket)
1.什么是UDP协议? UDP( User Datagram Protocol )协议是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层. ...
- UDP编程中的connect
标准的udp客户端开了套接口后,一般使用sendto和recvfrom函数来发数据,最近看到ntpclient的代码里面是使用send函数直接法的,就分析了一下,原来udp发送数据有两种方法供大家选用 ...
- udp编程中,一次能发送多少个bytes为好?
在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好? 当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对 像ICQ一类的发送聊天消息 ...
随机推荐
- UDP&串口调试助手用法(3)
发送参数配置 下面以 UDP 通道为例介绍 发送数据配置 概览 选择数据源 文件: 选择发送的文件 源码: 自己手动键入发送数据,默认输入的为16进制数据, 定时器发送周期 单位为毫秒. 发送帧计数 ...
- 【linux项目】lichee nano linux烧写
目录 前言 参考: 安装交叉编译链 搭建 SPI FLASH 烧录环境 让芯片进入烧写模式 sunxi 烧写命令 u-boot 裁剪 拉取 u-boot 源码 配置 u-boot 检查 flash 驱 ...
- 【LeetCode】443. String Compression 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 使用额外空间 不使用额外空间 日期 题目地址:htt ...
- 【LeetCode】303. Range Sum Query - Immutable 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 保存累积和 日期 题目地址:https://leetcode. ...
- 【LeetCode】371. Sum of Two Integers 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 位运算 日期 题目地址:https://leetco ...
- MySQL与Oracle 差异比较之二函数
函数 编号 类别 ORACLE MYSQL 注释 1 数字函数 round(1.23456,4) round(1.23456,4) 一样:ORACLE:select round(1.23456,4) ...
- python-mysql-replication原理分析
源码地址:https://github.com/noplay/python-mysql-replication 文件解析: ├── binlogstream.py ├── bitmap.py ├── ...
- 终于做了一把MySQL调参boy
本文通过笔者经历的一个真实案例来介绍一个MySQL中的重要参数innodb_buffer_pool_size,希望能给大家带来些许收获,当遇到类似性能问题时可以多一种思考方式. 图片拍摄于大唐不夜城 ...
- 【项目管理】《IT项目管理》Kathy Schwalbe 第1章 总论
博主:海底淤泥 1.为什么项目管理领域引起了大家的兴趣 1.更好控制财力.物力.人力资源 2.改进客户关系 3.缩短开发时间 4.降低成本和提高生产率 5.提高质量和可靠性 6.更大的边际利益空间 7 ...
- 【汇编语言】李忠《x86汇编语言——从实模式到保护模式》
该书配套资料网址已经失效 配套资料和章节答案下载 查看最新作者网址:http://www.lizhongc.com/ 勘误表:https://wenku.baidu.com/view/9213288b ...