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这类函数改变顺序后的结果,目的是实现变序后的结果输出到控制台。
展开
 我来答
lilaosi2001
2011-02-22 · TA获得超过823个赞
知道小有建树答主
回答量:296
采纳率:0%
帮助的人:355万
展开全部
首先,我要说你这样写程序,可以编译通过,你上面的程序我编译了,没有错误;
cout<<myad.sin_port<<endl;这句不会引起任何错误;
再次,我猜测你并不是编译不通过,而是连接出错了吧,希望你贴出你的出错信息,我帮你看一下是怎么回事;
然后,如果你确实不想用cout来打印结果到控制台上,那么,你可以选择写文件,输出myad.sin_port在转换后的结果;但是,我觉得根本没必要这么麻烦,直接在调试的时候,去看一下这个局部变量转换后的值就OK了,方便的很;
最后,关于htons的转换,我这里高诉你它是怎么转的吧,htons是对两个字节的数进行主机序到网络序的转换;转换的过程举例如下:
4367的十六进制为0x110F
然后将高位和地位互换,就变成了0x0F11,
而0x0F11的十进制为3857,
所以htons(4367)=3857;
追问
出错信息已经补充,确实是连接时候出错。麻烦您再帮忙解答下 谢谢~
quanquan902000
2011-02-22
知道答主
回答量:8
采纳率:0%
帮助的人:0
展开全部
Library: Use Ws2_32.lib.

在工程的设置里 link项,加一个 ws2_32.lib 就ok了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
奔向远方明
2011-02-22 · TA获得超过292个赞
知道答主
回答量:374
采纳率:0%
帮助的人:147万
展开全部
对C++有点忘了,现在做java,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式