| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 834 人关注过本帖
标题:htons()返回不同值的问题
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10750
专家分:43335
注 册:2014-5-20
收藏
得分:10 
htons()的原型:
程序代码:
u_short WSAAPI htons(
  [in] u_short hostshort
);

htons()的出入口都是16位,vfp声明htons()时应该这样:
DECLARE short htons IN Ws2_32 short


5 天前 22:23
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10750
专家分:43335
注 册:2014-5-20
收藏
得分:0 
翻看了以前的代码htons()的声明有错,有些声明intger、long,都不严谨很有可能运行异常。
5 天前 22:28
sych
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:430
专家分:670
注 册:2019-10-11
收藏
得分:10 
确实如此
图片附件: 游客没有浏览图片的权限,请 登录注册
4 天前 10:11
sam_jiang
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:14
帖 子:985
专家分:1516
注 册:2021-10-13
收藏
得分:0 
回复 11楼 吹水佬
检查了我的源代码,确实是我申明错了,厉害!

我确实申明为integer了,应该是short!@sych @吹水佬,感谢2位
4 天前 18:58
sam_jiang
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:14
帖 子:985
专家分:1516
注 册:2021-10-13
收藏
得分:0 
回复 13楼 sych
感谢,感谢,的确是这个问题导致!

程序代码:
...
    PROTECTED PROCEDURE dodecl
        DECLARE INTEGER WSAStartup IN ws2_32 INTEGER wVersion, STRING @lpWSAData
        DECLARE INTEGER WSACleanup IN ws2_32
        DECLARE INTEGER listen IN ws2_32 INTEGER s, INTEGER backlog
        DECLARE INTEGER accept IN ws2_32 INTEGER s, STRING @addr, INTEGER @addrlen
        DECLARE INTEGER socket IN ws2_32 INTEGER af, INTEGER type, INTEGER protocol       
        DECLARE INTEGER bind IN ws2_32 as _bind INTEGER s, STRING @sockaddr, INTEGER namelen
        DECLARE INTEGER send IN ws2_32 INTEGER s, STRING buf, INTEGER len, INTEGER flags       
        DECLARE INTEGER sendto IN ws2_32;
            INTEGER s, STRING buf, INTEGER len, INTEGER flags,;
            STRING @to, INTEGER tolen       
        DECLARE INTEGER accept IN ws2_32 INTEGER s, STRING @addr, INTEGER @addrlen
        DECLARE INTEGER recvfrom IN ws2_32;
            INTEGER s, STRING @buf, INTEGER len, INTEGER flags,;
            STRING @from, INTEGER @fromlen
        DECLARE INTEGER connect IN ws2_32 INTEGER s, STRING @name, INTEGER namelen                      
        DECLARE INTEGER recv IN ws2_32 INTEGER s, STRING @buf, INTEGER len, INTEGER flags        
        DECLARE STRING inet_ntoa IN ws2_32 INTEGER in
        DECLARE INTEGER inet_addr IN ws2_32 STRING @cp
        DECLARE INTEGER ntohs IN ws2_32 INTEGER netshort
        DECLARE INTEGER htons IN ws2_32 INTEGER netshort
        DECLARE INTEGER WSACleanup IN ws2_32
        DECLARE INTEGER closesocket IN ws2_32 INTEGER s
...
4 天前 18:59
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10750
专家分:43335
注 册:2014-5-20
收藏
得分:0 
回复 13楼 sych

我的结果不一样,有问题。

图片附件: 游客没有浏览图片的权限,请 登录注册
前天 20:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10750
专家分:43335
注 册:2014-5-20
收藏
得分:0 

有点意思,看来vfp在按位运算时要格外留神和严谨。

图片附件: 游客没有浏览图片的权限,请 登录注册
前天 21:14
schtg
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:Usa
等 级:贵宾
威 望:67
帖 子:2247
专家分:4727
注 册:2012-2-29
收藏
得分:0 
昨天 06:56
快速回复:htons()返回不同值的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.741029 second(s), 11 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved