写的异步通信CAsyncSocket程序m_hsoceket总是非法,请教!

MFC疑难注解:CAsyncSocket及CSocket MFC疑难注解:CAsyncSocket及CSocketfangle 2006-07-27MFC对SOCKET编程的支持其实是很充分的,然而其文档是语焉不详的。以至于大多数用VC编写的功能稍复杂的网络程序,还是使用API的。故CAsyncSocket及CSocket事实上成为疑难,群众多敬而远之。余好事者也,不忍资源浪费,特为之注解。一、CAsyncSocket与CSocket的区别前 阅读详情

写的异步通信CAsyncSocket程序m_hsoceket总是非法,请教!


MySocket.h

#ifndef __MYSOCKET_H__
#define __MYSOCKET_H__

class CDemoNetDlg;

class CMySocket:public CAsyncSocket
{
public:
	CMySocket();
	~CMySocket();

public :
	void SetParent(CDemoNetDlg *);
public :
	virtual void OnClose(int nErrorCode);
	virtual void OnConnect(int nErrorCode);
	virtual void OnReceive(int nErrorCode);

private :
	CDemoNetDlg * m_pDemoNetDlg;
};
#endif


MySocket.cpp

#include "stdafx.h"
#include "DemoNetDlg.h"
#include "MySocket.h"
#include "DemoNet.h"

CMySocket::CMySocket()
{
	m_pDemoNetDlg=NULL;
}

CMySocket::~CMySocket()
{
	m_pDemoNetDlg=NULL;
}

#if 0
BEGIN_MESSAGE_MAP(CMySocket, CAsyncSocket)
	//{{AFX_MSG_MAP(CMySocket)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#endif	// 0

void CMySocket::OnConnect(int nErrorCode)
{
	if(nErrorCode==0) m_pDemoNetDlg->OnConnect();
}

void CMySocket::OnClose(int nErrorCode)
{
	if(nErrorCode==0) m_pDemoNetDlg->OnClose();
}

void CMySocket::OnReceive(int nErrorCode)
{
	if(nErrorCode==0) m_pDemoNetDlg->OnReceive();
}

void CMySocket::SetParent(CDemoNetDlg *pDlg)
{
	m_pDemoNetDlg=pDlg;
}


DemoNetDlg.h

// DemoNetDlg.h : 头文件
//


#pragma once


#include "MySocket.h"
#include "Resource.h"
// CDemoNetDlg 对话框
class CDemoNetDlg : public CDialog
{
// 构造
public:
CDemoNetDlg(CWnd* pParent = NULL);// 标准构造函数


// 对话框数据
enum { IDD = IDD_DEMONET_DIALOG };


protected:
virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV 支持


public:
void OnReceive();
void OnConnect();
void OnClose();
CMySocket m_MySocket;


private:
CString m_strServName;
int m_nServPort;




// 实现
protected:
HICON m_hIcon;


// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedOk();
};



DemoNetDlg.cpp 

// DemoNetDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "DemoNet.h"
#include "DemoNetDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CDemoNetDlg 对话框

CDemoNetDlg::CDemoNetDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CDemoNetDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	m_strServName = _T("127.0.0.1");
	m_nServPort = 8009;
}

void CDemoNetDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CDemoNetDlg, CDialog)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDOK, &CDemoNetDlg::OnBnClickedOk)
END_MESSAGE_MAP()


// CDemoNetDlg 消息处理程序

BOOL CDemoNetDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	ShowWindow(SW_MINIMIZE);

	m_MySocket.SetParent(this);
	// TODO: 在此添加额外的初始化代码

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CDemoNetDlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于绘制的设备上下文

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// 使图标在工作区矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// 绘制图标
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CDemoNetDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}


void CDemoNetDlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	m_MySocket.Create();
	m_MySocket.Connect(m_strServName,m_nServPort);

	OnOK();
}

void CDemoNetDlg::OnClose()
{
	m_MySocket.Close();
}


void CDemoNetDlg::OnConnect()
{
}

void CDemoNetDlg::OnReceive()
{

}


MFC实现简单网络聊天程序 MFC实现简单网络聊天程序:从将文档开始教你怎么一步步的实现一个简单的网络聊天程序…… 立即下载

相关推荐

QMT中ContextInfo的使用注意

QMT中ContextInfo下声明的全局变量的使用注意事项

路在何方 2810

CAsyncSocket详解

一、CAsyncSocket异步机制 当你获得了一个异步连接后,实际上你扫除了发送动作与接收动作之间的依赖性。所以你随时可以发包,也随时可能收到包。发送、接收 函数都是异步非阻塞的,顷刻就能完成,所以收发交错进行着,你可 以一直工作,保持很高的效率。 但是,正因为发送、接收函数都是异步非阻塞的,所以仅调用它们并 不能保障发送或接收的完成。 例如发送函数Send,调用它可能有3种结果:错

Barry的博客 7939

智能电网中的智能调度与优化算法研究

本文研究智能电网中的智能调度与优化算法,旨在提高电网运行的效率与可靠性,减少能源浪费和设备故障的风险。在智能电网日益复杂化的背景下,传统的调度方法已难以满足高效、稳定的运行要求,因此亟需借助先进的优化算法对电网进行智能调度。本文第一深入分析智能电网调度中的关键问题与挑战,探讨优化算法在智能电网中的应用现状,并分析常见的优化算法,如遗传算法、粒子群算法和模拟退火算法。随后,本文构建智能电网的调度优化数学模型,并对电网负荷、发电模型及约束条件进行详细建模。在算法部分,本文提出改进的粒子群算法和遗传算法,并结合M

weixin_44553616的博客 1890

CAsyncSocket及CSocket的区别和用法

文章来源:http://blog.chinaunix.net/uid-20743151-id-326359.html

$firecat利白的代码足迹$ 1万+

直流有刷电机控制 - 驱动电路(二)

1.如图所示为最常见的推挽驱动电路,我附加了具有正反转功能的电机驱动控制,正反转是由两个继电器组成。使用推挽电路来驱动NMOS管时充电电流和放电电流都很大,因此NMOS管导通快,关断也快,而且NMOS温度不会很高。下面来介绍一下该电路的原理。(1)PWM_MCU是由单片机给出的PWM波信号,该信号是由一些列高低电平的方波构成。当信号为高电平的时候Q3导通,经过R47再到Q5的g极,此时mos导通,如果是K1闭合是正转那么K2闭合就是反转。(2)当PWM低电平时使得Q3关断,Q6导通。

u011030644的博客 4720

方差分解分析变量筛选与显著性计算

冗余分析(redundancy analysis,RDA)是一种回归分析结合主成分分析的排序方法,也是多响应变量(multiresponse)回归分析的拓展。在进行VPA时,首先就要对这些环境因子进行一个分类,然后在约束其它类环境因子的情况下,对某一类环境因子进行排序分析,这种分析也成为偏分析,即partialRDA。在地球环境科学的实际应用中,可以基于VPA结果得出不同类型的环境因素(如何气候、土壤性质以及植物)对生物群落组成(如植被丰度,微生物群落)的解释程度。对于由或创建的排序对象,函数。

wlh2067的博客 2520

使用CAsyncSocket类进行网络编程

1 服务器端 由先得专门为服务器端做一个Socket通信类CNewSocket类,此类继承CAsyncSocket类,专门负责服务器端socket通信事情: NewSocket.h: #pragma once #include "afxsock.h" //此类专门用来与客户端进行socket通信 class CNewSocket : public CAsyncSocket { publi...

管子(zero)的杂乱空间 756

即插即用篇 | 手把手教你 YOLOv11 添加注意力机制 | 适用于【检测任务】【分类任务】【分割任务】【关键点任务】| 20+ 种全打通!

即插即用篇 | 手把手教你 YOLOv11 添加注意力机制 | 适用于【检测任务】【分类任务】【分割任务】【关键点任务】| 20+ 种全打通!

Coding... 2831

浅析CAsyncSocket

首先CAsyncSocket采用的WSAAsynSelect模型,WSAAsynSelect是一种异步I/O模型,通过该模型,应用程序可以接收以Windows消息为基础的网络事件通知。而我们这里讲的就是CSocketWnd,它是从CWnd继承的。 [cpp] view plaincopy class CSocketWnd : public CWn

songyundi3的专栏 1090

QT+OSG/osgEarth编译之七十六:gltf+Qt编译(一套代码、一套框架,跨平台编译,版本:osgEarth-3.3插件库osgdb_gltf)

通过一套gltf代码和框架,实现osgdb_gltf跨平台编译。 在Qt环境下,集成头文件、库文件,构建跨平台编译的pro文件。 通过构建的一套配置工程,基于Qt Creator IDE,完成跨平台的编译实践。 在Windows、Linux、MacOS等操作系统上进行测试,成功编译,形成的成果(头文件、库文件等)可在不同系统下调用或使用,从而更好地构建跨平台解决方案。 采用的是osgEarth3.3版本。 读者可参考博客中的集成原理,构建不同版本的osgdb_gltf跨平台包。

LuckyHanMo的博客 1802

uniapp - [微信小程序] 实现点击预览各种文件 pdf文档、视频mp4、mp3音乐、图片图像、word/excel/ppt 等,uniapp小程序文件预览功能(详细示例代码,一键复制开箱即用)

uniapp,uniapp微信小程序,支付宝小程序平台端,uniapp实现文件在线预览,uniapp微信小程序怎么实现预览视频mp4,mp3音乐,图片,office文档,小程序平台如何在线预览word/excel/ppt文档,uniapp实现小程序端的文件查看功能,uniapp小程序端实现pdf文件预览,uniapp纯前端预览PDF、DOC、DOCX、图片、视频,uni-app文档、图片预览查看,uniapp文档预览功能,uniapp小程序端文件预览,uniapp小程序平台纯前端解析word,pdf,xls

✅ 精选推荐文章 1万+

CAsyncSocket与CSocket的区别 MFC网络编程

一、CAsyncSocket与CSocket的区别 前者是异步通信,后者是同步通信;前者是非阻塞模式,后者是阻塞 模式。另外,异步非阻塞模式有时也被称为长连接,同步阻塞模式则 被称为短连接。为了更明白地讲清楚两者的区别,举个例子: 设想你是一位体育老师,需要测验100位同学的400米成绩。 你当然不会让这100位同学一起起跑,因为当同学们返回终点时,你 根本来不及掐表记录各位同学的成绩

夜空的流星的专栏 4576

基于CST的PCB通孔三维建模实例

本文简明扼要地描述了如何利用CST的参数化脚本快速生成PCB的通孔三维模型,非常适合于进行快速精准的PCB参数分析。

一只豌豆象的博客 1834

MFC CSocket类 通信原理

前些天被问到了项目中怎么处理多个socket的io请求,因为项目在做的时候工期比较赶,只是找到了解决方案,并没有细想原理。后来在学习过程中知道了Linux IO多路复用的原理,但是MFC具体怎么处理Socket请求确实是不太清楚,只是当时直接使用了Csocket类,覆盖了OnReceive的方法,至于这个类怎么处理IO的细节并没有太多考虑。趁着今天上午的空闲时间赶紧来充电,看了下CSocket的源

zhang2531的专栏 5826

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【转】MFC疑难注解:CAsyncSocket及CSocket

<br />MFC对SOCKET编程的支持其实是很充分的,然而其文档是语焉不详的。以至于大多数用VC编写的功能稍复杂的网络程序,还是使用API的。故CAsyncSocket及CSocket事实上成为疑难,群众多敬而远之。余好事者也,不忍资源浪费,特为之注解。<br />一、CAsyncSocket与CSocket的区别<br />前者是异步通信,后者是同步通信;前者是非阻塞模式,后者是阻塞模式。另外,异步非阻塞模式有时也被称为长连接,同步阻塞模式则被称为短连接。为了更明白地讲清楚两者的区别,举个例子:设想你

guo693的专栏 650

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

MFC CAsyncSocket

MFC CAsyncSocket由于都是直接利用动态连接库wsock32.dll进行操作,实现比较繁琐。其实,为简化套接字编程,MFC 定义了两个套接字类:CAsyncSocket、CSocket。CAsyncSocket类在低层次上对 Windows Sockets API 进行了封装,其成员函数和 Windows Sockets API 函数直接相对应 。一个CAsyncSocket对 象 就 代 表 了一 个 套 接 字。而CSocket继承于CAsyncSocket 类,是对 Windo

lovton的专栏 6955

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

CAsyncSocket::Create()

它是一个异步非阻塞Socket封装类,CAsyncSocket::Create()有一个参数指明了你想要处理哪些Socket事件,你关心的事件被指定以后,这个Socket默认就被用作了异步方式。CAsyncSocket的Create()函数,除了创建了一个SOCKET以外,还创建了个CSocketWnd窗口对象,并使用WSAAsyncSelect()将这个SOCKET与该窗口对象关联,以让该窗口对

songyundi3的专栏 1248

MFC之CAsyncSocket详解

CAsyncSocket类是从Object类派生而来。CAsyncSocket对象称为异步套接字对象 使用CAsyncSocket进行网络编程,可以充分利用Windows操作系统提供的消息驱动机制,通过应用程序框架来传递消息,方便地处理各种网络事件。另一方面,作为MFC微软基础类库中的一员,CAsyncSocket可以和MFC的其他类融为一体,大大扩展了网络编程的空间,方便了编程。

小米的修行之路 1万+

C++ 经典算法 面试绝杀

1.链表逆序 2.链表合并 3.一棵树是否某条路径结点之和等于给定值。并描述算法复杂度 4.你熟悉的排序算法并描述算法复杂度。          快速排序          归并排序          堆排序          选择排序          插入排序         冒泡排序         折半插入排序 以下代码都能成功通过。 1.链表逆序

荒乱的没日没夜。。。 1万+

错误 4 error LNK2019: 无法解析的外部符号 "public: __thiscall CRobotProvider::~CRobotProvider(void)" (??1CRobotP

错误 4 error LNK2019: 无法解析的外部符号 "public: __thiscall CRobotProvider::~CRobotProvider(void)" (??1CRobotProvider@@QAE@XZ),该符号在函数 "public: void * __thiscall CRobotProvider::`scalar deleting destructor'(un

荒乱的没日没夜。。。 1万+

《大话设计模式 C++版》

在我的资源有下载:大话设计模式 C++ 设计模式分为三种类型,共23类。   创建型模式:单件模式、抽象工厂模式、建造者模式、工厂方法、原型模式。   结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。   行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式

荒乱的没日没夜。。。 8287
上一篇: 关于C++ 牛人推荐的好书(转载)
下一篇: Ubuntu下安装 C/C++ EClipse
程序员悟空
博客等级 码龄18年 65粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值