关于winsock的几个初级问题?
onreceive, onconnect, onsend 这几个函数怎么用的?
我看的书中没有对他作介绍,刚开始学请讲解,谢谢
问题点数:70、回复次数:16Top
1 楼zhaowuqing(我尽力而为)回复于 2001-04-08 18:23:00 得分 0
看MSDN啊,有例子的啦Top
2 楼ggyy(带着一堆光棍找朋友!)回复于 2001-04-08 18:40:00 得分 30
onreceive//通知套接字,存在有要调用receive()函数的接受数据
onconnect//当通知连接的套接字连接操作完毕,无论是否成功
onsend //缓冲区有数据可发送,通知套接字可以调用send()发送数据
Top
3 楼rfa20()回复于 2001-04-08 19:02:00 得分 0
还有onacceptTop
4 楼ggyy(带着一堆光棍找朋友!)回复于 2001-04-08 19:13:00 得分 0
onaccept //告诉监听的套接字,可以调用Accept()来连接挂起的连接请求
onclose()//通知套接字连接对方已经关闭了Top
5 楼rfa20()回复于 2001-04-08 20:03:00 得分 0
我还是有点糊涂。
是不是我在程序中声明一个套接字,上面几个函数就开始生效了?
例如:
mysocket ms; mysocket 是派生的csocket类。
Top
6 楼ggyy(带着一堆光棍找朋友!)回复于 2001-04-08 20:34:00 得分 0
你要调用舰艇函数:
ms.listen();//服务器,字要一打开就开始生效
mysocket msclient;
msclient.connect(....);//申请连接
然后服务器就监听到了连接请求
Top
7 楼rfa20()回复于 2001-04-08 21:13:00 得分 0
请各位再讲一下:
顺序是不是:
mysocket ms;
on***();
。。。 on开头的函数开始生效。
ms.listen() or ms.connect()
是不是这样的顺序呢?
我还是有点不清楚
connect() 和 onconnect ()的区别,他们都是谁调用的?
connect是套接字调用。那 on***()呢?Top
8 楼rfa20()回复于 2001-04-08 21:15:00 得分 0
再加 50分。
我看书里写的,感觉有点糊涂,请各位讲清楚,谢谢Top
9 楼ggyy(带着一堆光棍找朋友!)回复于 2001-04-08 21:23:00 得分 20
on****()是靠消息来调用的
比如说你要听电话:
电话相声就是相当与消息;没有人调用(你可以重载)
你接电话就相当与执行了accept();
后台消息!!!
Top
10 楼rfa20()回复于 2001-04-10 14:43:00 得分 0
!Top
11 楼rfa20()回复于 2001-04-11 23:56:00 得分 0
?Top
12 楼rfa20()回复于 2001-04-11 23:57:00 得分 0
还是有点不明白,我已经糊涂了。Top
13 楼rfa20()回复于 2001-04-18 20:53:00 得分 0
?Top
14 楼intoash(化为灰烬)回复于 2001-04-18 21:36:00 得分 20
这几个函数是消息处理函数,不是给你的程序调用的,而是由windows来调用.当有连接请求到来时windows会调用onaccept(),你可以重载这个函数,在函数中调用connect()建立连接.Top
15 楼eggplant(拉拉)回复于 2001-04-20 10:42:00 得分 0
偶个人认为这几个函数的流程是这样的:
服务方 客户方
Create();Bind(); Create();
Listen(); Connnect();//会返回一个正常错误WSAEWOULDBLOCK。
//当客户Connect()时,服务方会收到一个连接请求,
//这时系统会调用你重载的OnAccept函数,
//处理客户端的连接请求
OnAccept();
//处理完后,服务方发送响应,这时客户方将
//在重载的OnConnect函数,判断连接是否建立成功
OnConnect();
//建立成功后,可以调用OnSend发送数据,你必须重载OnSend函数
//并且必须在OnSend()中调用Send发送数据(这是比较地道的方法)
OnSend();
//服务方,会收到一个OnReceive请求,必须重载OnReceivce函数,
//在函数中使用Receive接受来自客户端的数据
OnReceive();
Close();
//客户在OnClose中,处理关闭连接请求
OnClose();Top
16 楼w8u(晌马)回复于 2001-04-26 03:52:00 得分 0
to eggplant(拉拉):
你讲得好清楚啊.谢谢你.能举例说明吗?我代他给你分.Top




