Go语言网络通信---连续通信的UDP编程
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编程的更多相关文章
- Go语言网络通信---一个简单的UDP编程
Server端: package main import ( "fmt" "net" ) func main() { //创建udp地址 udpAddr, _ ...
- Go语言网络通信---多用户连续通信的TCP编程
server端: package main import ( "fmt" "net" ) func main() { //建立监听 listener, err ...
- Go语言网络通信---TCP通信上传一个小文件
server: package main import ( "fmt" "net" "os" ) func SHandleError(err ...
- Linux学习四:UDP编程(上)
关于UDP和TCP对比优缺,这里就不说了. 使用UDP代码所掉用的函数和用于TCP的函数非常类似,这主要因为套接口库在底层的TCP和UDP的函数上加了一层抽象,通过这层抽象使得编程更容易,但失去了一些 ...
- Android程序员必知必会的网络通信传输层协议——UDP和TCP
1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯技术这一块)的开发者来说,网络编程是基础中的基础,只有更好地理解相关基础知识,对于应用层的开发才能做到游刃有余. 对于Android ...
- java 网络通信传输层协议——UDP和TCP
本文原文由作者“zskingking”发表于:jianshu.com/p/271b1c57bb0b,本次收录有改动. 1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯网专注的即时通 ...
- 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤
福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 Java全栈大联盟 ...
- 【Socket编程】通过Socket实现UDP编程
通过Socket实现UDP编程 UDP通信: 1.UDP协议(用户数据报协议)是无连接.不可靠.无序的. 2.UDP协议以数据报作为数据传输的载体. 3.使用UDP进行数据传输时,首先需要将要传输的数 ...
- python网络-Socket之udp编程(24)
一.udp简介 udp --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议. udp不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地. udp在 ...
随机推荐
- 把握好集成测试大关,ERP就成功了一大半
欢迎关注微信公众号:sap_gui (ERP咨询顾问之家) 前段时间收到一个朋友的信息,说他们目前正在实施ERP系统,已经到了集成测试环节了,但整个测试过程下来并不是太理想,很多接口不通,功能也还在开 ...
- C++介绍和class的介绍
课程介绍 程序设计II是程序设计I的延续,继续提高编程能力,并能掌握面向对象(Object Oriented Programming)的程序设计方法.所谓面向对象,指的是将具体的流程变得模块化.这可以 ...
- 1091 Acute Stroke
One important factor to identify acute stroke (急性脑卒中) is the volume of the stroke core. Given the re ...
- hdu2276 矩阵构造
题意: 给了n个灯泡的状态,他们绕成一个环,0是灭,1是亮,每一秒灯泡的状态都会改变,规则是如果当前这个灯泡的左边的灯泡当前是状态1,那么下一秒当前的这个灯泡状态就改变0变1,1变0,最后问 ...
- IIS6目录解析漏洞的实验
Windows 打开IIS管理器的方式 这个是网站IIS网站目录 右击默认网站中的属性,可以查看网站的属性,比如网站根目录,或者是端口 这个是网站的目录C:\www,有三个文件分别 ...
- PowerShell-5.网络请求
写了一个函数,用于文件下载并且执行: function DownLoadAndRun($vUrl ,$vLocalPath ,$vStart){ Import-Module BitsTransfer ...
- XCTF-mfw
mfw mfw是什么东西??? 看题: 进来只有几个标签,挨着点一遍,到About页面 看到了Git,猜测有git泄露,访问/.git/HEAD成功 上Githack,但是会一直重复 按了一次ctrl ...
- sql常识-RIGHT JOIN
SQL RIGHT JOIN 关键字 RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行. RIGHT JOIN ...
- 三、jmeter常用的元件及组件
一.HTTP cookie Manager 用来储浏览器产生的用户信息,Stepping Thread Group 可用于模拟阶梯加压! 二.HTTP Cache Manager 缓存管理器(模拟浏览 ...
- C# 变体(variance)
上节讲到了泛型,这节延申一下,讲一下变体. 变体(variance)是协变(convariance)和抗变(也说逆变contravariance)的统称.这个概念在.net 4中引入,在.net 2. ...