如何在mfc中添socket连接

来源:互联网 发布:2017网络最流行的语言 编辑:程序博客网 时间:2024/05/22 06:34

用途:已经写好的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();


 

原创粉丝点击