网站首页 > 文章中心 > 其它

go语言流程

作者:小编 更新时间:2023-09-25 14:03:38 浏览量:230人看过

Go 语言自我提升 (三次握手 - 四次挥手 - TCP状态图 - udp - 网络文件传输)

三次握手:

go语言流程-图1

被动端(服务器)接收 ACK —— 标志着 三次握手建立完成( Accept()/Dial() 返回 )

四次挥手:

滑动窗口:

通知对端本地存储数据的 缓冲区容量.—— write 函数在对端 缓冲区满时,有可能阻塞.

TCP状态转换:

① 主动发起连接请求端:

CLOSED —— 发送SYN —— SYN_SENT(了解) —— 接收ACK、SYN,回发 ACK —— ESTABLISHED (数据通信)

CLOSED —— LISTEN —— 接收SYN、发送ACK、SYN —— SYN_RCVD —— 接收 ACK —— ESTABLISHED (数据通信)

ESTABLISHED —— 接收 FIN、发送 ACK —— CLOSE_WAIT —— 发送 FIN —— LAST_ACK —— 接收ACK —— CLOSED

windows下查看TCP状态转换:

go语言流程-图2

netstat -an | findstr? 端口号

Linux下查看TCP状态转换:

netstat -an | grep? 端口号

TCP和UDP对比:?

TCP: 面向连接的可靠的数据包传递. 针对不稳定的 网络层,完全弥补.ACK

UDP:无连接不可靠的报文传输. 针对不稳定的 网络层,完全不弥补.还原网络真实状态.

?优点?????????? 缺点

TCP: 可靠、顺序、稳定 ?????? 系统资源消耗大,程序实现繁复、速度慢

UDP:系统资源消耗小,程序实现简单、速度快 ???? 不可靠、无序、不稳定

使用场景:

TCP:大文件、可靠数据传输. 对数据的 稳定性、准确性、一致性要求较高的场合.

UDP:应用于对数据时效性要求较高的场合. 网络直播、电话会议、视频直播、网络游戏.

UDP-CS-Server实现流程:

①? 创建 udp地址结构 ResolveUDPAddr("协议", "IP:port") —— udpAddr 本质 struct{IP、port}

UDP-CS-Client实现流程:

①? 创建用于通信的 socket. net.Dial("udp", "服务器IP:port") —— udpConn (socket)

UDPserver默认就支持并发!

------------------------------------

命令行参数: 在main函数启动时,向整个程序传参. 【重点】

xxx.exe:? 第 0 个参数.

argv1 :第 1 个参数.

使用: list := os.Args? 提取所有命令行参数.

获取文件属性函数:

os.stat(文件访问绝对路径) —— fileInfo 接口

fileInfo 包含 两个接口.

Name() 获取文件名. 不带访问路径

Size() 获取文件大小.

①? 获取命令行参数,得到文件名(带路径)filePath list := os.Args

①.) 只读打开文件 os.Open(filePath)

?for {

?}

网络文件传输 —— 接收端(服务器)

① 创建用于监听的 socket net.Listen() —— listener

①.) f = os.Create(带有路径的文件名)

for {

}

一学就会,手把手教你用Go语言调用智能合约

go语言流程-图3

智能合约调用是实现一个 DApp 的关键,一个完整的 DApp 包括前端、后端、智能合约及区块 链系统,智能合约的调用是连接区块链与前后端的关键.

我们先来了解一下智能合约调用的基础原理.智能合约运行在以太坊节点的 EVM 中.所以呢要 想调用合约必须要访问某个节点.

以后端程序为例,后端服务若想连接节点有两种可能,一种是双 方在同一主机,此时后端连接节点可以采用 本地 IPC(Inter-Process Communication,进 程间通信)机制,也可以采用 RPC(Remote Procedure Call,远程过程调用)机制;另 一种情况是双方不在同一台主机,此时只能采用 RPC 机制进行通信.

接着,我们来了解一下智能合约运行的过程.

智能合约的运行过程是后端服务连接某节点,将 智能合约的调用(交易)发送给节点,节点在验证了交易的合法性后进行全网广播,被矿工打包到 区块中代表此交易得到确认,至此交易才算完成.

就像数据库一样,每个区块链平台都会提供主流 开发语言的 SDK(Software Development Kit,软件开发工具包),由于 Geth 本身就是用 Go 语言 编写的,所以呢若想使用 Go 语言连接节点、发交易,直接在工程内导入 go-ethereum(Geth 源码) 包就可以了,剩下的问题就是流程和 API 的事情了.

最后提醒一下大家,智能合约被调用的两个关键点是节点和 SDK.

此时此刻呢介绍如何使用 Go 语言,借助 go-ethereum 源码库来实现智能合约的调用.这是有固定 步骤的,我们先来说一下总体步骤,以下面的合约为例.

步骤 01:编译合约,获取合约 ABI(Application Binary Interface,应用二进制接口). 单击【ABI】按钮拷贝合约 ABI 信息,将其粘贴到文件 calldemo.abi 中(可使用 Go 语言IDE 创建该文件,文件名可自定义,后缀最好使用 abi).

最好能将 calldemo.abi 单独保存在一个目录下,输入"ls"命令只能看到 calldemo.abi 文件,参 考效果如下:

此时此刻呢设置 module 生效和 GOPROXY,命令如下:

在项目工程内,执行初始化,calldemo 可以自定义名称.

怎样学习GO语言?

golang学习比较简单,不过任何一门语言都不是孤立存在的,今天这一节简要说明一下golang开发的学习路线

①golang基础,包括go语言安装,go语言语法,流程控制语句,函数,方法,面向对象概念,网络编程,并发编程等

链乔教育在线祝您学有所成.

以上就是土嘎嘎小编为大家整理的go语言流程相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章