MFC CAsyncSocket类作为客户端示例

592 篇文章 7 订阅 ¥99.90 ¥299.90

之前写过CAsyncSocket类使用的博客;进一步看一下;

VS新建一个MFC 对话框工程;

添加一个类,从CAsyncSocket继承,起个自己的名字;

对话框添加几个编辑框,按钮,静态控件;

为自己的CxxxAsyncSocket类添加重写的虚函数,OnConnect、OnReceive、OnSend;

自己的CAsyncSocket类的头文件,

class CxxxAsyncSocket : public CAsyncSocket
{
public:
	CCenterAsyncSocket();
	virtual ~CCenterAsyncSocket();
	virtual void OnConnect(int nErrorCode);
	virtual void OnReceive(int nErrorCode);
	virtual void OnSend(int nErrorCode);

	TCHAR m_szSendBuf[250];
};

自己的CAsyncSocket类的cpp代码;

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

#include "stdafx.h"
#include "datacenter1.h"
#include "CenterAsyncSocket.h"


// CCenterAsyncSocket

CCenterAsyncSocke
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 MFC 客户和服务之间传递图片,可以使用以下步骤: 1. 在客户中选择要传递的图片,并将其转换为字节数组。 2. 将字节数组传递给服务,可以使用 TCP 或 UDP 协议。 3. 在服务中接收字节数组,并将其转换回图片格式。 4. 将图片保存到服务的文件系统中,或者将其转发给其他客户。 下面是一个简单的示例代码,展示了如何在 MFC 客户和服务之间传递图片: MFC 客户: ```c++ // 选择要传递的图片 CFileDialog dlg(TRUE); if (dlg.DoModal() == IDOK) { // 加载图片并转换为字节数组 CImage image; image.Load(dlg.GetPathName()); CByteArray byteArray; IStream* pStream = image.GetEncoderClsid(); image.Save( CComPtr<IStream>(pStream), pStream->GetClsid(), NULL ); BYTE *pData = NULL; ULONG nSize = 0; pStream->Seek( {0}, STREAM_SEEK_SET, NULL ); STATSTG statstg = {0}; pStream->Stat( &statstg, STATFLAG_NONAME ); nSize = statstg.cbSize.QuadPart; pData = new BYTE[nSize]; pStream->Read( pData, nSize, NULL ); byteArray.SetSize(nSize); memcpy(byteArray.GetData(), pData, nSize); // 发送字节数组到服务 // ... } ``` MFC 服务: ```c++ // 接收字节数组 // ... // 将字节数组转换为图片格式 CByteArray byteArray; // ... CImage image; IStream* pStream = image.GetEncoderClsid(); pStream->Write(byteArray.GetData(), byteArray.GetSize(), NULL); image.Load( CComPtr<IStream>(pStream) ); // 保存图片到文件系统中或者转发给其他客户 // ... ``` 注意事项: 1. 在传递字节数组时,需要考虑数据的大小和传输的可靠性。 2. 在转换图片格式时,需要使用正确的编解码器,以确保图像质量和文件大小的平衡。 3. 在保存图片到文件系统中或者转发给其他客户时,需要考虑安全性和权限问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值