Server:

package main

import (
"fmt"
"net"
) func main() { //创建udp地址
udpAddr, _ := net.ResolveUDPAddr("udp", "127.0.0.1:8080") //服务端建立监听
serverConn, err := net.ListenUDP("udp", udpAddr)
if err == nil{
fmt.Println("正在8080端口监听。。。")
}else {
fmt.Println(err)
return
} defer func() {
serverConn.Close()
fmt.Println("main over!")
}() //与客户端IO
//建立1024字节缓冲区
buffer := make([]byte, 1024) for {
/*
读取客户端消息到缓冲区
n = 读取到buffer中的字节数
remoteAddress = 数据包的来源地址
err = 超时等错误
*/
n, remoteAddress, _ := serverConn.ReadFromUDP(buffer) //从buffer读取数据
contents := buffer[:n] //打印读到的地址和数据
fmt.Printf("客户端:%v %v\n",remoteAddress,string(contents)) //回复本条消息
serverConn.WriteToUDP([]byte("孽障!"), remoteAddress)
} }

  

Client:

package main

import (
"fmt"
"net"
) func main() {
//使用udp协议拨号,远程地址127.0.0.1:8080
conn, _ := net.Dial("udp", "127.0.0.1:8080") //程序退出前关闭连接,释放io资源
defer func() {
conn.Close()
fmt.Println("客户端已退出")
}() //创建接收消息的缓冲区
buffer := make([]byte, 1024)
//用户要发送的消息文本
var userInput string
for{
//接收用户输入
fmt.Print("大神请输入:")
fmt.Scan(&userInput)
//如果用户输入exit则退出
if userInput == "exit"{
break
}
//客户端发起交谈
conn.Write([]byte(userInput)) //接收服务端消息
n, err := conn.Read(buffer)
fmt.Println(err)
fmt.Println("服务端:"+string(buffer[:n]))
}
}

  

Go语言网络通信---连续通信的UDP编程的更多相关文章

  1. Go语言网络通信---一个简单的UDP编程

    Server端: package main import ( "fmt" "net" ) func main() { //创建udp地址 udpAddr, _ ...

  2. Go语言网络通信---多用户连续通信的TCP编程

    server端: package main import ( "fmt" "net" ) func main() { //建立监听 listener, err ...

  3. Go语言网络通信---TCP通信上传一个小文件

    server: package main import ( "fmt" "net" "os" ) func SHandleError(err ...

  4. Linux学习四:UDP编程(上)

    关于UDP和TCP对比优缺,这里就不说了. 使用UDP代码所掉用的函数和用于TCP的函数非常类似,这主要因为套接口库在底层的TCP和UDP的函数上加了一层抽象,通过这层抽象使得编程更容易,但失去了一些 ...

  5. Android程序员必知必会的网络通信传输层协议——UDP和TCP

    1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯技术这一块)的开发者来说,网络编程是基础中的基础,只有更好地理解相关基础知识,对于应用层的开发才能做到游刃有余. 对于Android ...

  6. java 网络通信传输层协议——UDP和TCP

    本文原文由作者“zskingking”发表于:jianshu.com/p/271b1c57bb0b,本次收录有改动. 1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯网专注的即时通 ...

  7. 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤

    福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑         Java全栈大联盟   ...

  8. 【Socket编程】通过Socket实现UDP编程

    通过Socket实现UDP编程 UDP通信: 1.UDP协议(用户数据报协议)是无连接.不可靠.无序的. 2.UDP协议以数据报作为数据传输的载体. 3.使用UDP进行数据传输时,首先需要将要传输的数 ...

  9. python网络-Socket之udp编程(24)

    一.udp简介 udp --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议. udp不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地. udp在 ...

随机推荐

  1. 15个问题告诉你如何使用Java泛型

    摘要:Java泛型其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. Java ...

  2. 1079 Total Sales of Supply Chain

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...

  3. c++ 第三方库收集

    1.boost 这个使用的人多不多说了 2.pthread windows下的posix线程实现 3.libcurl 一个有名的开源网络爬虫库 阿里旺旺中使用到了 4.libeay32 OpenSSL ...

  4. 使用 Azure Container Registry 储存镜像

    Azure Container Registry(容器注册表)是基于 Docker Registry 2.0规范的托管专用 Docker 注册表服务. 可以创建和维护 Azure 容器注册表来存储与管 ...

  5. Bugku-文件包含2

    文件包含2 目录 文件包含2 题目描述 解题过程 参考 题目描述 没有描述 解题过程 文件包含题目大多都是php环境的, 所以先试试伪协议 发现php://被ban了 继续尝试,发现file://协议 ...

  6. Asp.NetCore Web开发之Nlog日志配置

    接着讲基于ASP .net Core 的web开发,这节主要讲一下如何使用和配置Nlog进行日志记录. 日志在开发中的作用是很重要的,使用日志,程序出了错误可以及时捕获并记录下来,开发人员可以通过日志 ...

  7. java并发编程:深入了解synchronized

    简介 synchronized是Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码.同时它还保证了共享变量的内存可见性. ...

  8. LVS跨网段DR模型

    客户端IP地址:172.16.8.147 路由器服务器IP地址:172.16.8.167内网IP地址:192.168.1.3 一.将客户端的网关修改为路由服务器IP地址 vim ifcfg-ens33 ...

  9. JAVA的基本介绍和JDK的安装

    JAVA帝国 JAVA特性和优势 简单 面向对象 可复制性 高性能 分布式 动态性 多线性 安全性 健壮性 JAVA三大版本 javaSE:标准版(桌面程序.控制台开发) javaME(嵌入式开发) ...

  10. [bug] Shell:paths must precede expression

    参考 https://www.cnblogs.com/peter1994/p/7297656.html