| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1072 人关注过本帖
标题:setsockopt写法正确吗?
只看楼主 加入收藏
ljb8864
Rank: 2
等 级:论坛游民
帖 子:171
专家分:14
注 册:2023-6-4
收藏
得分:0 
以下是引用吹水佬在2023-9-5 22:02:48的发言:

DECLARE LONG  setsockopt IN "Ws2_32" long s ,long level,long optname ,string @optval ,long optlen
DECLARE LONG  getsockopt IN "Ws2_32" long s ,long level,long optname ,string @optval ,long @optlen

setsockopt(this.obJECT.SocketHandle,SOL_SOCKET,SO_RCVBUF,@optval,optlen)
getsockopt(this.obJECT.SocketHandle,SOL_SOCKET,SO_RCVBUF,@optval,@optlen)




按你设置没有出错,但设置的0h00200000值,设置不上,
DECLARE LONG  setsockopt IN "Ws2_32" long s ,long level,long optname ,string @optval ,long optlen
DECLARE LONG  getsockopt IN "Ws2_32" long s ,long level,long optname ,string @optval ,long @optlen
optval= 0h00200000 &&0h00200000
optlen=LEN(optval)
?setsockopt(this.obJECT.SocketHandle,SOL_SOCKET,SO_RCVBUF,@optval,optlen)

optval= REPLICATE(0h00,4)
optlen=LEN(optval)
?getsockopt(this.obJECT.SocketHandle,SOL_SOCKET,SO_RCVBUF,@optval,@optlen),optval


返回结果
0
0 0h00000000
2023-09-06 10:08
foxfans
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:113
专家分:324
注 册:2021-10-23
收藏
得分:0 
        *!* #define SOL_SOCKET 0xffff
        *!* #define SO_RCVBUF 0x1002
        *!* DECLARE LONG setsockopt IN "Ws2_32" long,long,long,string,long
        *!* DECLARE LONG getsockopt IN "Ws2_32" long,long,long,string @,long @
        m.optvalSet = BINTOC(4096,"4RS")
        m.optvalGet = REPLICATE(0h00,4)
        m.optvalLen=4
        IF setsockopt(m.hSocket,SOL_SOCKET,SO_RCVBUF,m.optvalSet,m.optvalLen)<>-1  
            IF getsockopt(m.hSocket,SOL_SOCKET,SO_RCVBUF,@m.optvalGet,@m.optvalLen)<>-1
               MESSAGEBOX(CTOBIN(m.optvalGet,"4rs"))
            ENDIF
        ENDIF  
        实际上getsockopt倒数第2个参数可以不用string @,换成long @即可, 这样replica(0h00,4), 直接用 0  

        *!* #define SOL_SOCKET 0xffff
        *!* #define SO_RCVBUF 0x1002
        *!* DECLARE LONG setsockopt IN "Ws2_32" long,long,long,string,long
        *!* DECLARE LONG getsockopt IN "Ws2_32" long,long,long,long @,long @
        m.optvalSet = BINTOC(4096,"4RS")
        m.optvalGet = 0
        m.optvalLen=4
        IF setsockopt(m.hSocket,SOL_SOCKET,SO_RCVBUF,m.optvalSet,m.optvalLen)<>-1  
            IF getsockopt(m.hSocket,SOL_SOCKET,SO_RCVBUF,@m.optvalGet,@m.optvalLen)<>-1
               MESSAGEBOX(m.optvalGet)
            ENDIF
        ENDIF  
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2023-9-6 11:40编辑过]

2023-09-06 11:34
ljb8864
Rank: 2
等 级:论坛游民
帖 子:171
专家分:14
注 册:2023-6-4
收藏
得分:0 
回复 22楼 foxfans
UDP协议,这个能这样设置吗?
2023-09-06 12:35
快速回复:setsockopt写法正确吗?
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023439 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved