3.16
设备上运行的智能设备 Winsock 服务器收到 OnConnect 回调通知
智能设备套接字服务器实现使用面向 WinCE 的 CSocket 或 CasyncSocket 实现 OnConnect() 和 OnAccept() 方法。当客户端与设备中寄宿的此服务器建立连接时,服务器将同时收到 OnAccept() 和 OnConnect() 通知。
解决此问题的方法
为避免在服务器中收到 OnConnect() 通知,请执行以下操作
在服务器套接字上调用 Accept() 之前
1. 使用订阅服务器套接字的事件调用 AsyncSelect 方法。即,如果“socket”是服务器套接字的对象,则调用
socket.AsyncSelect(FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CLOSE);
请注意,除 FD_CONNECT 之外,所有事件均用于在服务器中显式屏蔽 Connect 事件。
2. 如果需要服务器套接字屏蔽其他事件,则请使用服务器套接字适用的特定事件列表,例如,如果服务器套接字不希望接收读取操作事件,则还应在调用 AsynchSelect 方法时从事件列表中移除 FD_READ,如
socket.AsyncSelect(FD_WRITE | FD_OOB | FD_ACCEPT | FD_CLOSE);
以屏蔽 FD_CONNECT 和 FD_READ 事件。
请参考
http://msdn.microsoft.com/librar ... a3a.asyncselect.asp 获取 ASyncSelect 方法行为的完整说明。
智能设备套接字服务器实现使用面向 WinCE 的 CSocket 或 CasyncSocket 实现 OnConnect() 和 OnAccept() 方法。当客户端与设备中寄宿的此服务器建立连接时,服务器将同时收到 OnAccept() 和 OnConnect() 通知。
解决此问题的方法
为避免在服务器中收到 OnConnect() 通知,请执行以下操作
在服务器套接字上调用 Accept() 之前
1. 使用订阅服务器套接字的事件调用 AsyncSelect 方法。即,如果“socket”是服务器套接字的对象,则调用
socket.AsyncSelect(FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CLOSE);
请注意,除 FD_CONNECT 之外,所有事件均用于在服务器中显式屏蔽 Connect 事件。
2. 如果需要服务器套接字屏蔽其他事件,则请使用服务器套接字适用的特定事件列表,例如,如果服务器套接字不希望接收读取操作事件,则还应在调用 AsynchSelect 方法时从事件列表中移除 FD_READ,如
socket.AsyncSelect(FD_WRITE | FD_OOB | FD_ACCEPT | FD_CLOSE);
以屏蔽 FD_CONNECT 和 FD_READ 事件。
请参考
http://msdn.microsoft.com/librar ... a3a.asyncselect.asp 获取 ASyncSelect 方法行为的完整说明。