如何在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();


 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值