社区
C语言
帖子详情
socket通讯的字节顺序的问题
njallenwang
2001-09-03 04:32:10
winsock.h中提供了两个函数ntohl,ntohs只能转换ushort和ulong,对其它类型呢?(short,int,float,double...)
问题好象有点土啊,但我现在还不明白,能告诉我吗?
...全文
178
6
打赏
收藏
socket通讯的字节顺序的问题
winsock.h中提供了两个函数ntohl,ntohs只能转换ushort和ulong,对其它类型呢?(short,int,float,double...) 问题好象有点土啊,但我现在还不明白,能告诉我吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
njallenwang
2001-09-03
打赏
举报
回复
我在做java和c之间的通讯必须转换字节顺序,
对word和int16我已经转换成功,但对于float直接用htonl会截掉小数部分,不知如何解决?darkay(火凤凰)帮我!
darkay
2001-09-03
打赏
举报
回复
同意楼上的说法,如果你要对一个32位的float数进行转换的话只要调用htonl即可.
告诉你一个秘密:htonl实际上就是高低位的呼唤(对于host是intel兼容CPU)也就是说:
0x12345678 -> 0x78563412而已,如果你要对大于32位的数据进行转换,只要根据这个规则转换就可以啦,给个示范:
__int64 hton64(__int64 host)
{
__int64 ret;
long high,low;
low = host & 0xFFFFFFFF;
host >>= 32;
high = host & 0xFFFFFFFF;
low = htonl(low);
high = htonl(high);
ret = 0;
ret = low;
ret <<=32;
ret |= high;
return ret;
}
#define ntoh64(net) hton64(net)
mengliu
2001-09-03
打赏
举报
回复
再网络中传输的字节顺序是一个标准。至于传输其它类型需要你自己的约定。
因为不同的体系结构有big-endianess和little-endianess。每一个接着都有自己的转换函数。
所以只要对多字节的书掉同样的 函数就行,不过注意的是int的位数。有的32为,有的64为呀。
cgaga
2001-09-03
打赏
举报
回复
字节序问题只存在于数据需要与非i386兼容机进行数据交换的时候
如果你的程序只是用tcp/ip来传送数据,所有运行你程序计算机都是i386兼容机
并且你并没用修改ip报头化,你就没有必要考虑此问题
如果你确定需要考虑网络字节序的话,
你可以参考一些unix网络编程书中的《外部数据表示》一章
njallenwang
2001-09-03
打赏
举报
回复
那怎么传有符号的数和符点?难道要自己移位?
activeboy
2001-09-03
打赏
举报
回复
不能,因为这是internet的字节顺序。internet只有WORD.和 DWORD。也就是不带符号的整形。
Socket
编程快速入门
本课程将理本课程将理啊 论结合实践,带你从零开始,系统学习
Socket
编程技术,让
Socket
的学习不再那么零散与难以掌握,同时会提炼出
Socket
网络传输的核心思想与构架,并带你踩坑出坑,增加你的分析与处理
问题
的啊aas...
socket
入门到精通(一)
字节
顺序
从事iOS开发多年了,由于并非专业做即时
通讯
这块业务,即使项目中有相关的功能也是第三方封装的sdk,并不能很好的理解锻炼
socket
这一块相关的能力,看到网上很多的demo也只简单粗粗的说说。为了更好的学习理解
socket
通信相关的知识,决定边学习边把自己的学习心得和大家分享,如果有哪里理解不到位的,还请大家多多支持,共同进步。
字节
顺序
什么是
字节
顺序
?
字节
顺序
是指占内存多于一个
字节
类型...
socket
通讯
原理及例程(一看就懂)
对TCP/IP、UDP、
Socket
编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问: 什么是TCP/IP、UDP?
Socket
在哪里呢?
Socket
是什么呢? 你会使用它们吗? 什么是TCP/IP、UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议...
Socket
网络
字节
序—简单易懂
网络
字节
序 在计算机的世界中有两种
字节
序 大端
字节
序:高地址存低位,低地址存高位 小端
字节
序:低地址存低位,高地址存高位 比如我们的端口号就是用16位来存储两个
字节
,比如端口号为1001用16进制表示为0x03 e9 网络数据流同样有大端小端之分,那么如何定义网络数据流的地址呢?发送主机通常将发送缓冲区中的数据按内存地址从低到高的
顺序
发出,接收主机把从网络上接到的
字节
依次保存在接收缓冲区中,也是按内存地址从低到高的
顺序
保存,因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据
socket
及
字节
序转换(嵌入式学习)
1、1982 - Berkeley Software Distributions 操作系统引入了
socket
作为本地进程之间通信的接口2、1986 - Berkeley 扩展了
socket
接口,使之支持UNIX 下的TCP/IP 通信3、现在很多应用 (FTP, Telnet) 都依赖这一接口。
C语言
69,368
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章