vc异步网络通信中的CAsynSocket的用法

其实异步网络通信的实质与mfc中的消息机制非常相似。

首先,对于服务器来说,需要先创建一个派生自CAsynSocket类,由于在服务端,必须先创建套接字,并且把这个套接字与窗口进行映射。CMySocket sock;sock.SetParent(this);然后就需要用create()进行创建然后用listen侦听。接下来就就和mfc中的消息机制一样了。由于在CMySocket中定义了OnAccept()OnReceive()虚函数,现在当有客户端进行连接的时候,就会有一个消息发送到消息队列中,然后把这个消息最后就会被送到这个OnAccept()函数中进行响应。如果有客户端发送的消息过来,则会把这个消息发送到OnReceive()函数中进行处理,然后还需要在窗口中写上一个发送函数即可

其次,对于客户端来说。也是相似的原理。创建派生类和前面一样,要重写的函数是OnReceive()函数就可以了,然后就是创建套接字,用Crete(),然后Connect(),接下来就是消息机制帮你处理接受消息的事情了。

转载于:https://www.cnblogs.com/yangxiaoluck/archive/2009/12/17/1626250.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAsynSocket是一个MFC类,用于实现异步Socket通信。要派生CAsynSocket类,可以按照以下步骤操作: 1. 创建一个新的MFC类,将其命名为你想要的类名,比如MyAsynSocket。 2. 在MyAsynSocket.h文件添加头文件afxsock.h,并在类声明前加入如下代码: ```cpp #include <afxsock.h> class MyAsynSocket : public CAsyncSocket { // class declaration }; ``` 3. 根据你的需求,在MyAsynSocket添加自定义的函数和成员变量。 4. 实现MyAsynSocket的虚函数OnAccept、OnConnect、OnClose、OnReceive和OnSend。这些函数将在异步Socket通信过程被调用,你可以在这些函数添加自己的处理逻辑。 5. 在MyAsynSocket.cpp文件实现MyAsynSocket的函数。 6. 在需要使用MyAsynSocket类的地方,包含MyAsynSocket.h头文件并创建MyAsynSocket类的对象即可。 例如,以下是一个派生自CAsynSocket的简单示例: ```cpp #include <afxsock.h> class MyAsynSocket : public CAsyncSocket { public: void OnAccept(int nErrorCode); void OnConnect(int nErrorCode); void OnClose(int nErrorCode); void OnReceive(int nErrorCode); void OnSend(int nErrorCode); private: // add your own member variables and functions here }; void MyAsynSocket::OnAccept(int nErrorCode) { // add your own implementation here } void MyAsynSocket::OnConnect(int nErrorCode) { // add your own implementation here } void MyAsynSocket::OnClose(int nErrorCode) { // add your own implementation here } void MyAsynSocket::OnReceive(int nErrorCode) { // add your own implementation here } void MyAsynSocket::OnSend(int nErrorCode) { // add your own implementation here } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值