如何在mfc中添socket連接

用途:已經寫好的mfc例程如果沒有socket而需要增加socket採用這個辦法,作用類似於新建MFC工程時勾選套接字。


1、在入口程序的    CWinApp::InitInstance();後邊添加下面的代碼


    if (!AfxSocketInit())
    {
        AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
        return FALSE;
    }

2、在對話框程序的頭文件中#pragma once後面添加對庫的引用



#include <afxsock.h>


3、在對話框cpp文件開頭定義接收socket的字符串


char szRecvMsg[256] = {0};


4、在需要打開socket的地方拷貝如下代碼:

    /////////////////////////////////////////////////////////////////////////////
//與網絡相關
////////////////////////////////////////////////////////////////////////////

if (!AfxSocketInit())
    {
    //    AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
  return 1;
    }


    //Cmedia_tj_6Dlg *aDlg = (Cmedia_tj_6Dlg *)lParam;

    CString strPort;
    
    //aDlg->GetDlgItemText(IDC_EDIT_PORT, strPort);
    
    UINT nPort = 8808;
    
    //socket------------------------------------------------
    
    CSocket aSocket, serverSocket;
    
    if (!aSocket.Socket())
    {
        char szError[256] = {0};
        
        sprintf(szError, "Create Faild: %d", GetLastError());
        
        AfxMessageBox(szError);
        
    //    return 1;
    }

    BOOL bOptVal = TRUE;
    int bOptLen = sizeof(BOOL);

    aSocket.SetSockOpt(SO_REUSEADDR, (void *)&bOptVal, bOptLen, SOL_SOCKET);
    
    
    if (!aSocket.Bind(nPort))
    {
        char szError[256] = {0};
            
        sprintf(szError, "Bind Faild: %d", GetLastError());
            
        AfxMessageBox(szError);
            
    //    return 1;
    }

    if(!aSocket.Listen(10))
    {    
        char szError[256] = {0};
        
        sprintf(szError, "Listen Faild: %d", GetLastError());
        
        AfxMessageBox(szError);
        
    //    return 1;
    }
    
    CString strText;
    
    //aDlg->GetDlgItemText(IDC_EDIT_LOG, strText);
    
//    strText += "Server Start! \r\n";
    
//    aDlg->SetDlgItemText(IDC_EDIT_LOG, strText);


剩下的就是accept了


如果是client端

 

 CSocket m_socket;
 m_socket.Create();
  if (m_socket.Connect("127.0.0.1",6666) ){m_socket.Send("00",2);}
 m_socket.Close();


 

發佈了33 篇原創文章 · 獲贊 7 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章