socket编程中怎么查看htons htonl ntohs ntohl这类函数重新排序后的结果?
#include<iostream.h>#include<winsock2.h>voidmain(){structsockaddr_inmyad;memset(&myad...
#include <iostream.h>
#include <winsock2.h>
void main()
{
struct sockaddr_in myad;
memset(&myad,0,sizeof(struct sockaddr_in));
myad.sin_family=AF_INET;
myad.sin_port=htons(4367);
myad.sin_addr.s_addr=htonl(INADDR_ANY);
cout<<myad.sin_port<<endl;
}
我是个初学者 刚刚接触网络编程
cout<<myad.sin_port<<endl;这句的目的是查看htons(4367)后的结果 但是这样连接不能通过 我想知道如何才能查看htons重新排序后的结果 thank you!
出错信息:
Linking...
htons.obj : error LNK2001: unresolved external symbol __imp__htonl@4
htons.obj : error LNK2001: unresolved external symbol __imp__htons@4
Debug/htons.exe : fatal error LNK1120: 2 unresolved externals
执行 link.exe 时出错.
htons.exe - 1 error(s), 0 warning(s)
我想输出htons这类函数改变顺序后的结果,目的是实现变序后的结果输出到控制台。 展开
#include <winsock2.h>
void main()
{
struct sockaddr_in myad;
memset(&myad,0,sizeof(struct sockaddr_in));
myad.sin_family=AF_INET;
myad.sin_port=htons(4367);
myad.sin_addr.s_addr=htonl(INADDR_ANY);
cout<<myad.sin_port<<endl;
}
我是个初学者 刚刚接触网络编程
cout<<myad.sin_port<<endl;这句的目的是查看htons(4367)后的结果 但是这样连接不能通过 我想知道如何才能查看htons重新排序后的结果 thank you!
出错信息:
Linking...
htons.obj : error LNK2001: unresolved external symbol __imp__htonl@4
htons.obj : error LNK2001: unresolved external symbol __imp__htons@4
Debug/htons.exe : fatal error LNK1120: 2 unresolved externals
执行 link.exe 时出错.
htons.exe - 1 error(s), 0 warning(s)
我想输出htons这类函数改变顺序后的结果,目的是实现变序后的结果输出到控制台。 展开
3个回答
展开全部
首先,我要说你这样写程序,可以编译通过,你上面的程序我编译了,没有错误;
cout<<myad.sin_port<<endl;这句不会引起任何错误;
再次,我猜测你并不是编译不通过,而是连接出错了吧,希望你贴出你的出错信息,我帮你看一下是怎么回事;
然后,如果你确实不想用cout来打印结果到控制台上,那么,你可以选择写文件,输出myad.sin_port在转换后的结果;但是,我觉得根本没必要这么麻烦,直接在调试的时候,去看一下这个局部变量转换后的值就OK了,方便的很;
最后,关于htons的转换,我这里高诉你它是怎么转的吧,htons是对两个字节的数进行主机序到网络序的转换;转换的过程举例如下:
4367的十六进制为0x110F
然后将高位和地位互换,就变成了0x0F11,
而0x0F11的十进制为3857,
所以htons(4367)=3857;
cout<<myad.sin_port<<endl;这句不会引起任何错误;
再次,我猜测你并不是编译不通过,而是连接出错了吧,希望你贴出你的出错信息,我帮你看一下是怎么回事;
然后,如果你确实不想用cout来打印结果到控制台上,那么,你可以选择写文件,输出myad.sin_port在转换后的结果;但是,我觉得根本没必要这么麻烦,直接在调试的时候,去看一下这个局部变量转换后的值就OK了,方便的很;
最后,关于htons的转换,我这里高诉你它是怎么转的吧,htons是对两个字节的数进行主机序到网络序的转换;转换的过程举例如下:
4367的十六进制为0x110F
然后将高位和地位互换,就变成了0x0F11,
而0x0F11的十进制为3857,
所以htons(4367)=3857;
追问
出错信息已经补充,确实是连接时候出错。麻烦您再帮忙解答下 谢谢~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询