[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,希望对你能有帮助!