htonl函数 c语言,c – 理解htonl()和ntohl()
我试图使用unix套接字测试发送一些udp数据包到localhost.
我的理解是,当设置ip地址和端口以便发送数据包时,我会将我的sockaddr_inwith填充为转换为网络字节顺序的值.
我在OSX上,我对此感到惊讶
printf("ntohl: %d\n", ntohl(4711));
printf("htonl: %d\n", htonl(4711));
printf("plain: %d\n", 4711);
打印
ntohl: 1729232896
htonl: 1729232896
plain: 4711
所以这两个函数都没有实际返回普通值.我希望看到结果不同,因为x86是little-endian(afaik),或者与实际数字4711相同且相同.显然我不明白htonl和ntohl及其变体的作用.我错过了什么?
相关代码是这样的:
int main(int argc, char *argv[])
{
if (argc != 4)
{
fprintf(stderr, "%s\n", HELP);
exit(-1);
}
in_addr_t rec_addr = inet_addr(argv[1]); // first arg is '127.0.0.1'
in_port_t rec_port = atoi(argv[2]); // second arg is port number
printf("Address is %s\nPort is %d\n", argv[1], rec_port);
char* inpath = argv[3];
char* file_buf;
unsigned long file_size = readFile(inpath, &file_buf); // I am trying to send a file
if (file_size > 0)
{
struct sockaddr_in dest;
dest.sin_family = AF_INET;
dest.sin_addr.s_addr = rec_addr; // here I would use htons
dest.sin_port = rec_port;
printf("ntohs: %d\n", ntohl(4711));
printf("htons: %d\n", htonl(4711));
printf("plain: %d\n", 4711);
int socket_fd = socket(AF_INET, SOCK_DGRAM, 0);
if (socket_fd != -1)
{
int error;
error = sendto(socket_fd, file_buf, file_size + 1, 0, (struct sockaddr*)&dest, sizeof(dest));
if (error == -1)
fprintf(stderr, "%s\n", strerror(errno));
else printf("Sent %d bytes.\n", error);
}
}
free(file_buf);
return 0;
}
htonl函数 c语言,c – 理解htonl()和ntohl()相关推荐
- htonl函数的功能_htons和htonl函数具体应用
htons和htonl函数具体应用 htons和htonl函数,是用来将主机字节顺序转换为网络字节顺序 在进行网络抓包时,抓到的包的数据是网络字节顺序,在进行编程时,要进行主机字节顺序和网络字节顺序间 ...
- perm函数c语言_理解C语言(三) 字符串处理函数
1 字符串基础 字符串是一种重要的数据类型,有零个或多个字符组成的有限串行. 定义子串: 串中任意个连续的字符组成的子序列,并规定空串是任意串的子串,任意串也是其自身的子串,如字符串"ade ...
- htonl函数的功能_htonl()函数详解
在<Linux网络编程>这本书中提到htonl()函数的原型.实现代码如下: long htonl(long value) { return ((value <<24 )|(( ...
- c语言中htonl函数,htonl()函数学习
今天在网上看到一篇关于htonl()函数的解释,感觉有道理,贴过来大家一起学习! htonl就是把本机字节顺序转化为网络字节顺序 h---host 本地主机 to 就是to 了 n ---net ...
- 论文浅尝 - ACL2022 | 基于多语言语义解耦表示的跨语言迁移方法实现多语言阅读理解...
论文作者:吴林娟,天津大学,研究方向为自然语言理解 论文链接:http://arxiv.org/abs/2204.00996 代码地址:https://github.com/wulinjuan/SSD ...
- C语言 文件读写 fseek 函数 - C语言零基础入门教程
目录 一.fseek 函数简介 二.fseek 函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.fseek 函数简介 fse ...
- 解释型语言和编译型语言的区别_从泛型的使用情况看出你对语言的理解程度(2)...
上篇我们提到:Java中的泛型是不可变的,可以通过<? extends E>实现了泛型的协变,<? super E>实现泛型的逆变.从泛型的使用情况看出你对语言的理解程度(1) ...
- Matlab中filter.m和filtfilt.m函数C语言实现
一.一些基础知识 filter.m函数是依据z变换的一些知识进行的滤波方法. filtfilt.m则还有另一个名字是零相位滤波,顾名思义,通过filtfilt函数滤波后的信号,幅值会发生变化,但相位不 ...
- python语言中有哪些函数_Python语言中的函数
本文主要向大家介绍了Python语言中的函数,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 学了 Python 中的数据类型,语句,接下来就来说一下 Python 中的函数,函数 ...
最新文章
- 什么时候可以全面升级鸿蒙系统,华为已做好全面升级准备,鸿蒙系统将替换底层安卓系统...
- [BZOJ1079][SCOI2008]着色方案 dp
- AJAX开发简略 (转)
- APT团伙是如何利用Windows热修复的?
- 都已经十岁的 Apache Dubbo,还能再乘风破浪吗?
- H3C 2126 限速后的问题
- mysql备份表恢复数据库_mysql备份恢复数据库据/表
- 无线网络技术基础 01
- mysql二分法查找亿行_算法——二分法查找(binarySearch)
- Debugview调试视图
- 28岁程序员期权过亿,彪悍从字节退休,网友:酸了酸了!
- python os.access_Python用access判断文件是否被占用的实例方法
- 入职体检的体检项目有哪些呢?
- yolov7训练自己的数据集
- 手算KMP算法next数组
- 1076: 三位数求解
- android usb uac,iBasso UAC
- 短视频配音的秘诀!你不会还在傻傻自己人声配音吧?
- 细数中国历史上的十大乱世枭雄(上)
- Ubuntu系统在终端查看一些软硬件版本或文件大小的指令!