go语言中的udp协议及TCP通讯怎么配置
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇"go语言中的udp协议及TCP通讯怎么配置"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来
千家信息网最后更新 2026年11月02日go语言中的udp协议及TCP通讯怎么配置
这篇"go语言中的udp协议及TCP通讯怎么配置"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"go语言中的udp协议及TCP通讯怎么配置"文章吧。
udp协议
server端
package mainimport ( "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("监听失败!", err) return } defer socket.Close() for { // 读取客户端传来的数据 data := make([]byte, 4096) read, remoteAddr, err := socket.ReadFromUDP(data) if err != nil { fmt.Println("读取数据失败!", err) continue } fmt.Println(read, remoteAddr) fmt.Printf("%s\n\n", data) //发送数据,告诉客户端已收到 senddata := []byte("hello client!") _, err = socket.WriteToUDP(senddata, remoteAddr) if err != nil { return fmt.Println("发送数据失败!", err) } }}client端
package mainimport ( "fmt" "net")func main() { // 创建连接 socket, err := net.DialUDP("udp4", nil, &net.UDPAddr{ IP: net.IPv4(0, 0, 0, 0), Port: 8080, }) if err != nil { fmt.Println("连接失败!", err) return } defer socket.Close() // 发送给服务端数据 senddata := []byte("hello server!") _, err = socket.Write(senddata) if err != nil { fmt.Println("发送数据失败!", err) return } // 接收客户端的数据 data := make([]byte, 4096) read, remoteAddr, err := socket.ReadFromUDP(data) if err != nil { fmt.Println("读取数据失败!", err) return } fmt.Println(read, remoteAddr) fmt.Printf("%s\n", data)}TCP通讯(基本)
服务端
package mainimport ( "fmt" "net")func main() { //监听 listener, err := net.Listen("tcp", "127.0.0.1:8000") if err != nil { fmt.Println("err = ", err) return } defer listener.Close() //阻塞等待用户链接 conn, err := listener.Accept() if err != nil { fmt.Println("err = ", err) return } //接收用户的请求 buf := make([]byte, 1024) //1024大小的缓冲区 n, err1 := conn.Read(buf) if err1 != nil { fmt.Println("err1 = ", err1) return } fmt.Println("buf = ", string(buf[:n])) defer conn.Close() //关闭当前用户链接}客户端
package mainimport ( "fmt" "net")func main() { //主动连接服务器 conn, err := net.Dial("tcp", "127.0.0.1:8000") if err != nil { fmt.Println("err = ", err) return } defer conn.Close() //发送数据 conn.Write([]byte("are u ok?"))}TCP通讯并发服务器
服务端
package mainimport ( "fmt" "net" "strings")//处理用户请求func HandleConn(conn net.Conn) { //函数调用完毕,自动关闭conn defer conn.Close() //获取客户端的网络地址信息 addr := conn.RemoteAddr().String() fmt.Println(addr, " conncet sucessful") buf := make([]byte, 2048) for { //读取用户数据 n, err := conn.Read(buf) if err != nil { fmt.Println("err = ", err) return } fmt.Printf("[%s]: %s\n", addr, string(buf[:n])) fmt.Println("len = ", len(string(buf[:n]))) //if "exit" == string(buf[:n-1]) { //nc测试 if "exit" == string(buf[:n-2]) { //自己写的客户端测试, 发送时,多了2个字符, "\r\n" fmt.Println(addr, " exit") return } //把数据转换为大写,再给用户发送 conn.Write([]byte(strings.ToUpper(string(buf[:n])))) }}func main() { //监听 listener, err := net.Listen("tcp", "127.0.0.1:8000") if err != nil { fmt.Println("err = ", err) return } defer listener.Close() //接收多个用户 for { conn, err := listener.Accept() if err != nil { fmt.Println("err = ", err) return } //处理用户请求, 新建一个协程 go HandleConn(conn) }}客户端
package mainimport ( "fmt" "net" "os")func main() { //主动连接服务器 conn, err := net.Dial("tcp", "127.0.0.1:8000") if err != nil { fmt.Println("net.Dial err = ", err) return } //main调用完毕,关闭连接 defer conn.Close() go func() { //从键盘输入内容,给服务器发送内容 str := make([]byte, 1024) for { n, err := os.Stdin.Read(str) //从键盘读取内容, 放在str if err != nil { fmt.Println("os.Stdin. err = ", err) return } //把输入的内容给服务器发送 conn.Write(str[:n]) } }() //接收服务器回复的数据 //切片缓冲 buf := make([]byte, 1024) for { n, err := conn.Read(buf) //接收服务器的请求 if err != nil { fmt.Println("conn.Read err = ", err) return } fmt.Println(string(buf[:n])) //打印接收到的内容, 转换为字符串再打印 }}以上就是关于"go语言中的udp协议及TCP通讯怎么配置"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
数据
内容
服务
用户
客户
服务器
通讯
客户端
监听
语言
配置
主动
字符
文章
知识
端的
篇文章
链接
键盘
处理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
重生之互联网科技帝国
互联网科技巨头监管
高科技与互联网
上海卓越科技 互联网
滨湖区互联网智能科技产品供应
安控科技rtu产品工业互联网
科技赋能互联网健康
互联网科技寓意
团飞科技与伯堂互联网服务平台
宝灵互联网科技有限公司
开一家科技互联网公司需要多少钱
米聚互联网科技南京有限公司排面
浙南科技城互联网大厦建设工程
科技大学互联网
沐思想互联网科技有限公司
北京市互联网新科技
陕西云淼互联网科技公司
深圳互联网科技园地址
科技互联网专业务虚会材料
利用互联网等科技手段
科技互联网公司装修
新华互联网科技学院
互联网科技作文
深圳齐家互联网科技
互联网高科技股票
互联网 科技服务平台
广西拼得多互联网科技有限公司
恒银科技与互联网金融
互联网科技的全部知识
上海京穆互联网科技有限公司