getsockopt的问题,详细请入内。(100分)

  • 主题发起人 主题发起人 liop
  • 开始时间 开始时间
L

liop

Unregistered / Unconfirmed
GUEST, unregistred user!
在BCB6中
getsockopt(m_Socket,SOL_SOCKET,SO_MAX_MSG_SIZE,(char*)&nMaxMsgSize,&nMsgSizeLen);
老提示
SO_MAX_MSG_SIZE没有定义
请问如何解决?
 
我看了一下delphi也存在这个问题:其他option差不多都有声明,就是没有这个声明.
他的值是这样:你可以在你的头文件里面定义一下,或者直接使用&H2003这个数.
Global Const SO_MAX_MSG_SIZE = &H2003 '/* maximum message size */

 
DELPHI是在WINSOCK.PAS里面定义SOCKET的OPTION,BCB应该也在这个文件(WINSOCK.C?),
找到SO_LINGER的定义位置,然后在他后面加上SO_MAX_MSG_SIZE的CONST定义.
 
是在 WinSock.h中,但定义的值和SOL_SOCKET一样行吗?
值为:0xffff
 
不可以.
SO_MAX_MSG_SIZE一定要定义成&H2003
这是个常数,你定义成其他值就变成获取其他OPTION了.

其实你直接使用&H2003也可以,DELPHI声明这些CONST是为了让你不必要牢记这些没意义的数字.
如果不把这些定义下来,你自己就要自己记住&H2003表示SO_MAX_MSG_SIZE,
&h0080表示so_linger等等.
 
接受答案了.
 
后退
顶部