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 中的函数,函数 ...
最新文章
- 赠票 | 第三届语言与智能高峰论坛200个免费参会名额!
- DM8168 OpenCV尝试与评估(编译ARM版OpenCV)
- c#入门经典笔记第十章
- 安卓逆向_21 --- Java层和so层的反调试( IDA 动态调试 JNI_OnLoad、init_array下断)
- 作者:张鹏(1993-),男,国防科学技术大学并行与分布处理重点实验室硕士生...
- Maven学习总结(49)——Maven Profile详解
- 兼容firstChild和firstElementChild
- 怎么把git代码导入到本地仓库_git在本地仓库添加了一个tag,如何把这个tag同步到远程仓库?...
- 数据结构之链表(Linked list)
- 蓝桥杯Python初级组测试题之Turtle画图2
- Codeforces ~ 1063C ~ Dwarves, Hats and Extrasensory Abilities (交互题,二分)
- 【单片机毕业设计】【mcuclub-jj-013】基于单片机的衣柜的设计
- python3.5中import cv2报错
- 三星提出XFormer | 超越MobileViT、DeiT、MobileNet等模型
- C语言:输入三个整数,从小到大排序!
- (转)中国外包企业战略思考
- 物联网开发笔记(75)- 使用Micropython开发ESP32开发板之控制tm1637时钟数码管显示
- Robosense速腾激光雷达如何在线连接雷达并发送点云数据到ROS
- 浅谈Oracle数据库调优(1)
- mysql json 中文乱码_MySQL对JSON类型UTF-8编码导致中文乱码探讨
热门文章
- C++之spriintf函数(itoa函数)
- android studio 抽屉,Android Studio 的抽屉导航
- 王子的烦恼(c++)
- oracle 19c adg GAP恢复
- kalibr标定realsenseD435i(一)--imu标定
- 游戏服务器炸了多久能修复,DNF:腾讯游戏服务器炸了,仅仅几分钟玩家们却损失惨重...
- 企业团队建设与管理培训PPT模板
- 案例分析中可能的考点1:招投标程序
- 从数码照片中读取定位信息
- ibm服务器日常维护,《七小服公开课》IBM P780日常维护