专栏首页Golang语言社区c语言客户端与go语言服务端通信(网络字节序)

c语言客户端与go语言服务端通信(网络字节序)

网络二进制数据转换: 总所周知,数据在tcp网络传输协议中传输的字节序是大端模式的,换句话说如果你要传输一个int32型的整数,那么假设其二进制小端模式表示为11111111111111110000000000000000那么其大端模式表示为00000000000000001111111111111111,利用c语言的htonl函数会将数据字节序转换成大端模式,在网络上面传输,接收端想解出原始数据只需要认为发送来的数据是大端模式,按照大端模式表示的数据解析便可 举个例子: 在C语言端发送一个int32_t数据过程如下: 发送端(c语言)
char buf[100];  

int32_t x = 100;  

((int*)buf)[0] = htonl(x);  

send(clientfd, buf, 100, 0);  

接收端(golang)

var num int32  

buffer := make([]byte, 4)                                                                    

length, err := conn.Read(buffer)  

if err != nil {  

      return  

}  

buf := bytes.NewReader(buffer)  

err = binary.Read(buf, binary.BigEndian, &num)  

注意:这里golang并没有类似ntohl()、htonl()等函数, 但是提供了binary.BigEndian binary.LittleEndian等模式

本文分享自微信公众号 - Golang语言社区(Golangweb)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-08-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Golang语言--将byte的int转换

    在使用golang做数据传输的时候,会经常遇到byte与int的互转,但golang并没有现成的方法,因此只能通过binary包来解决 所以,需要 :impor...

    李海彬
  • Golang 源码剖析:fmt 标准库 --- Print* 是怎么样输出的?

    Print 使用默认格式说明符打印格式并写入标准输出。另外当两者都为非空字符串时将插入一个空格

    李海彬
  • Linux Golang 环境搭建(版本1.6.2)

    1、下载安装包 https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz 2、解压缩安装...

    李海彬
  • 面试题之Javaweb篇(二)

    1,加载驱动 2,通过DriverManager对象获取连接对象Connection 3,通过连接对象获取会话 4,通过会话进行数据的增删改查,封装对象 5,关...

    用户5224393
  • 软件公司一些不为人知的秘密

    转自:http://www.techug.com/post/it-tech-secrect.html

    程序员互动联盟
  • 高铁新建人脸识别系统,如何做到整容也可以识别逃犯?

    用户1737318
  • 自我管理 —— 从好习惯开始

    首先要说明的是,我们不要刻意追求工具的使用,不要为了「使用工具」而使用工具。就像用再好的笔,也不能写出更好的文章。我曾经一度追求新工具的使用,过分关注 UI 和...

    Yano_nankai
  • beego路由配置路由设置

    web框架中,路由是重要的一环,对于beego的路由配置如何? 让我们从入口文件先分析起来吧:

    若与
  • 算法:ORA-600 2252和SCN 最大值SCN_WRAP SCN_BASE

    自 2019年6月23日之后,关于 SCN 的问题不断爆发,尤其是 2252 错误引发了很多紧急的故障。 我在上一篇文章中已经详细描述了这个场景: https...

    数据和云01
  • Direct3D 11 Tutorial 5: 3D Transformation_Direct3D 11 教程5:3D转型

    在上一个教程中,我们从模型空间到屏幕渲染了一个立方体。 在本教程中,我们将扩展转换的概念并演示可以通过这些转换实现的简单动画。

    Zoctopus

扫码关注云+社区

领取腾讯云代金券