WSAAsyncSelect函数怎么用??? ( 积分: 90 )

  • 主题发起人 主题发起人 aliwy
  • 开始时间 开始时间
A

aliwy

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用WinSock Api写一个通讯程序,服务端打算用控制台来写。初始化-创建-绑定-监听都完成了,然后要用到WSAAsyncSelect函数,从而对客户端的连接、发送信息等操作做出相应的反映。但就是搞不明白这个WSAAsyncSelect函数到底怎么用?哪位朋友能指教一下?或者给一个控制台下的源码看看???感谢!!!
 
我想用WinSock Api写一个通讯程序,服务端打算用控制台来写。初始化-创建-绑定-监听都完成了,然后要用到WSAAsyncSelect函数,从而对客户端的连接、发送信息等操作做出相应的反映。但就是搞不明白这个WSAAsyncSelect函数到底怎么用?哪位朋友能指教一下?或者给一个控制台下的源码看看???感谢!!!
 
//请参考LeeChange大侠的作品
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2632983
 
我是要在要在控制台中使用这个函数的!
 
int WSAAsyncSelect(SOCKET s, HWND hWnd, unsigned int uMsg, long lEvent);

其中s就是我们想要的那个套接字;hWnd是接收消息通知那个窗口句柄;wMsg参数指定在
发生网络事件时要接受的消息,通常设成比WM_USER大的一个值,以避免消息冲突;
lEvent指定了一个位掩码,对应一系列网络事件的组合,见下表:

Event 含义
FD_READ 程序想要接收有关是否可读的通知,以便读入数据
FD_WRITE 程序想要接收有关是否可写的通知,以便写入数据
FD_OOB 程序想要接收是否有OOB数据到达的通知
FD_ACCEPT 程序想要接收与进入连接有关的通知
FD_CONNECT 程序想要接收与一次连接或多点接入有关的通知
FD_CLOSE 程序想要接收与套接字关闭有关的通知
FD_QOS 程序想要接收套接字“服务质量(QoS)”发生变化的通知
FD_GROUP_QOS 暂时没用,属于保留事件
FD_ROUTING_INTERFACE_CHANGE 程序想要接收有关到指定地址的路由接口发生变化的通知
FD_ADDRESS_LIST_CHANGE 程序想要接收本地地址变化的通知
 
[^][^][^][^][^][^][^][^][^][^][^][^][^]
 
在控制台下那个Handle是什么呢??
 
WSAAsyncSelect必须要一个窗口句柄来接受通知消息。
控制台下可以用WSAEventSelect函数代替。
 
其实也无所谓了,在控制台下也可以自己虚拟加一个HANDLE来用WSAASYNCSELECT
 
如何虚拟加一个Handle呢?不会是说nil或0吧?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3100475
 
说实话,leader朋友的答案应该可以解决我的问题。但是,毕竟我是初学者,况且代码的注释少,看得不是很明白呀。
 
这个是窗口消息模型
是一种tcp连接的一种
找本windows网络编程上面有讲的
盒子有的下
 
程序倒已经写出来了,但没有用到这个函数。
不过还是感谢大家的帮助,谢谢!!!
 
后退
顶部