首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

[100]关于WSAAccept的 ConditionFunc 函数有关问题

2012-03-13 
[100]关于WSAAccept的 ConditionFunc 函数问题我的服务器是完成端口模型的,用WSAAccept等待连接。客户端用W

[100]关于WSAAccept的 ConditionFunc 函数问题
我的服务器是完成端口模型的,用WSAAccept等待连接。客户端用   WSAConnect   连接
,为了能确定一些链接的信息,我想是用int     WSAConnect(
    SOCKET   s,                                                    
    const   struct   sockaddr   FAR   *name,    
    int   namelen,                                              
    LPWSABUF   lpCallerData,                          
    LPWSABUF   lpCalleeData,                          
    LPQOS   lpSQOS,                                            
    LPQOS   lpGQOS                                              
);             的     lpCallerData参数传数据据给   服务器   端的回调函数ConditionFunc   吧。但是我能连接成功,也能连接后通信,就是这个连接时的参数无法传递。我断点调试回调函数什么也没接受到。一下是部分源码:

//服务器端口:
  if   ((Accept   =   WSAAccept(Listen,   NULL,   NULL,   ConditionFunc,   0))   ==   SOCKET_ERROR)
      {     ...}
  else{...}
客户端:
...
WSABUF   Wsabuf_Send;
WSABUF   Wsabuf_Recv;
...
      Wsabuf_Send.buf= "SOCK_STREAM ";
      Wsabuf_Send.len=12;
      Wsabuf_Recv.buf= " ";
      Wsabuf_Recv.len=100;
...
if(SOCKET_ERROR==WSAConnect(Socket_Client,(SOCKADDR*)&InternetAddr,sizeof(SOCKADDR),&Wsabuf_Send,&Wsabuf_Recv,NULL,NULL))
{...}
else     {...}



[解决办法]
WSAAccept的那个lpfnCondition是怎么初始化的?

The ConditionFunc is a placeholder for the application-specified callback function. The actual condition function must reside in a DLL or application module. It is exported in the module definition file.
[解决办法]
不使用QOS使用WSAAccept/WSAConnect确实是没有必要。使用的是完成端口不如使用AcceptEx,如果客户端也基于重叠IO的话,换成ConnectEx不是更好?
[解决办法]
mark
[解决办法]
其实很简单,TCP等大多数协议都不支持这个功能,所以没有用!!!
去看看windows网络编程就知道了
[解决办法]
如果想知道是否支持对这个参数的支持就要用WSAEnumProtocols函数查看,不过你是要用TCP/IP,所以就一定没有用!
[解决办法]
http://blog.csdn.net/wang921718/archive/2007/09/04/1772396.aspx

看看这里我的BLOG,希望对你能有帮助!

热点排行