日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC CAsyncSocket类基本使用 - 1

發布時間:2025/4/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC CAsyncSocket类基本使用 - 1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

win7, VC6;新建一個對話框工程;菜單選擇:插入 - 類;先來做?CAsyncSocket類 作為客戶端;

新建類;類的類型為MFC類,基類為CAsyncSocket;如果使用mfc實現套接字,一般要從mfc提供的套接字類繼承出自己的類,否則不好使;

生成相應類文件;

類向導里為CMysyncsock類添加OnConnect消息處理函數;

添加OnSend消息處理函數;

詳細的MS參考和示例代碼;

? ? https://docs.microsoft.com/zh-cn/cpp/mfc/reference/casyncsocket-class?view=msvc-160#casyncsocketcreate

一個講的詳細些的mfc套接字教程;

? ? https://wenku.baidu.com/view/1eda781c6bd97f192279e9de.html

使用CAsyncSocket類的基本步驟;

?

CMysyncsock類的頭文件需要包含,
? ? #include <afxSock.h>

為CMysyncsock類添加三個公共成員;

class CMysyncsock : public CAsyncSocket
{
// Attributes
public:
?? ?CString ?m_sendBuffer; ? //for async send
?? ?int ? ? ?m_nBytesSent;
?? ?int ? ? ?m_nBytesBufferSize;

OnConnect如下;?CAsyncSocket類作為客戶端,去連接服務端,進行了連接動作以后,mfc框架會自動調用下面的OnConnect函數,把錯誤碼傳進來;如果連接成功,錯誤碼為0;

void CMysyncsock::OnConnect(int nErrorCode) {// TODO: Add your specialized code here and/or call the base classif(nErrorCode==0){AfxMessageBox("客戶端連接服務端成功!!!");}else{AfxMessageBox("客戶端連接服務端失敗!!!");}CAsyncSocket::OnConnect(nErrorCode); }

對話框類cpp文件包含:#include "Mysyncsock.h"

對話框類cpp文件的初始化對話框函數中,初始化套接字;

// TODO: Add extra initialization hereif (!AfxSocketInit()){AfxMessageBox("套接字初始化失敗!");return FALSE;}

按鈕1的處理代碼;? ? 工程的名稱是sock3;

void CSock3Dlg::OnButton1() {// TODO: Add your control notification handler code heretry{CMysyncsock *pSocket = new CMysyncsock();//pSocket->Create();pSocket->Create(0, SOCK_STREAM, FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE, NULL);CString strret;BOOL ret;if (pSocket == NULL){//WriteLog("SOCKET沒有初始化");AfxMessageBox("SOCKET沒有初始化");return;}ret=pSocket->Connect("127.0.0.1", 9003);}catch(CException e){TCHAR szError[1024]; e.GetErrorMessage(szError,1024);AfxMessageBox(szError); } }

啟動 nc,作為服務端監聽9003端口;

nc的使用見,

? ??https://blog.csdn.net/bcbobo21cn/article/details/106632720

然后啟動程序;點擊按鈕之后如下;

? ? 這樣客戶端程序就連接上了服務端;

? ? 點擊按鈕時,ret=pSocket->Connect("127.0.0.1", 9003) 這句被執行;連接執行了以后,mfc框架自己調用?void CMysyncsock::OnConnect(int nErrorCode) {...} 函數;

既然連上了,先簡單發送一下看,客戶端發;

在 ret=pSocket->Connect("127.0.0.1", 9003) 后添加2句發送代碼;

?? ??? ?char sendstr[50] = "ABCDEF";
?? ??? ?pSocket->Send((unsigned char*)sendstr,6);

nc端不會收到,還只是連接上;

如果使用?CAsyncSocket類 ,能提供一定的方便和方便編寫增強功能代碼;但有一定量的東西要熟悉;

總結

以上是生活随笔為你收集整理的MFC CAsyncSocket类基本使用 - 1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。