4.发送数据包给 客户端 udpConn.WriteToUDP("数据",clientAddr)
UDP-CS-Client实现流程:
1.创建用于通信的 socket 。net.Dial("udp", "服务器IP:port") —— udpConn (socket)
2.以后流程参见 TCP客户端实现源码 。
UDPserver默认就支持并发!
------------------------------------
命令行参数: 在main函数启动时,向整个程序传参 。【重点】
语法: go run xxx.goargv1 argv2argv3argv4。。。
xxx.exe:第 0 个参数 。
argv1 :第 1 个参数 。
argv2 :第 2 个参数 。
argv3 :第 3 个参数 。
argv4 :第 4 个参数 。
使用: list := os.Args提取所有命令行参数 。
获取文件属性函数:
os.stat(文件访问绝对路径) —— fileInfo 接口
fileInfo 包含 两个接口 。
Name() 获取文件名 。不带访问路径
Size() 获取文件大小 。
网络文件传输 —— 发送端(客户端)
1.获取命令行参数,得到文件名(带路径)filePathlist := os.Args
2.使用 os.stat() 获取 文件名(不带路径)fileName
3.创建 用于数据传输的 socketnet.Dial("tcp",“服务器IP+port”) —— conn
4.发送文件名(不带路径)给接收端,conn.write()
5.读取 接收端回发“ok”,判断无误 。封装函数 sendFile(filePath, conn) 发送文件内容
6.实现 sendFile(filePath,conn)
1) 只读打开文件 os.Open(filePath)
for {
2) 从文件中读数据f.Read(buf)
3) 将读到的数据写到socket中conn.write(buf[:n])
4)判断读取文件的 结尾 。io.EOF. 跳出循环
}
网络文件传输 —— 接收端(服务器)
1. 创建用于监听的 socket net.Listen() —— listener
2. 借助listener 创建用于 通信的 socket listener.Accpet()—— conn
3. 读取 conn.read() 发送端的 文件名,保存至本地 。
4. 回发 “ok”应答 发送端 。
5. 封装函数,接收文件内容 recvFile(文件路径)
1) f = os.Create(带有路径的文件名)
for {
2)从 socket中读取发送端发送的 文件内容。conn.read(buf)
3)将读到的数据 保存至本地文件 f.Write(buf[:n])
4)判断 读取conn 结束 , 代表文件传输完成 。n == 0break
}
Golang 网络编程丝绸之路 - TCP/UDP 地址解析TL;DR在使用 Golang 编写 TCP/UDP socket 的时候,第一步做的就是地址解析 。
该函数返回的地址包含的信息如下:
TCPAddr里,IP既可以是 IPv4 地址,也可以是 IPv6 地址 。Port就是端口了 。Zone是 IPv6 本地地址所在的区域 。
从返回结果看该函数的参数,network指address的网络类型; address指要解析的地址,会从中解析出我们想要的IP ,Port和Zone。
从源码中可以看出,参数network只能是如下四个值,否则会得到一个错误 。
解析过程跟ResolveTCPAddr的一样,不过得到的是*UDPAddr。
UDPAddr包含的信息如下:
关于go语言基于tcp协议书和golang tcp通信的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。
推荐阅读
- 快手直播九宫格视频教程,快手怎么发九宫格
- 电脑什么样的显示器好,电脑什么样的显示器好一点
- 打印机电脑休眠怎么打印,打印机电脑休眠怎么打印出来
- 798直播运营,798运营模式
- php返回添加数据总数 php返回值
- 半模组电源怎么插显卡上,半模组电源怎么插显卡上的线
- redis运行一段时间后停止,redis运行一段时间无法连接
- mysql数据导出数据库表,mysql导出整个数据库数据
- vb.net角度 vbnet ui