MFC下的socket简单编程

Socket服务端,启动Socket和监听客户端的连接

在StdAfx.h中添加 #include <afxsock.h>
在界面Dlg.cpp中添加#include <winsock2.h>
还有添加#pragma comment(lib, "WS2_32.lib")
SOCKET sock;创建成全局变量

打开网络连接

    WSADATA wsaData;
    WORD version = MAKEWORD(2, 2);
    int ret = WSAStartup(version, &wsaData);
    if (ret != 0)
    {
        MessageBox(_T("初始化失败"));
        return false;
    }

比较简单的初始化Socket的方式:


bool C线程Dlg::InitSocket()
{
    WSADATA wsaData;
    WORD version = MAKEWORD(2, 2);
    int ret = WSAStartup(version, &wsaData);
    if (ret != 0)
    {
        MessageBox(_T("初始化失败"));
        return false;
    }

    m_socket = socket(AF_INET, SOCK_STREAM, 0);

    if (INVALID_SOCKET == m_socket)
    {
        MessageBox(_T("套接字创建失败"), _T("警告"));
        return false;
    }

    SOCKADDR_IN addrSock;
    addrSock.sin_family = AF_INET;
    addrSock.sin_port = htons(12345);
    addrSock.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

    int retval;
    retval = bind(m_socket, (SOCKADDR*)&addrSock, sizeof(SOCKADDR));

    if (SOCKET_ERROR == retval)
    {
        closesocket(m_socket);
        MessageBox(_T("套接字绑定失败"), _T("警告"));
        return false;
    }
    return true;
}

监听等操作(整合到线程里面):

    if (listen(m_socket, 5) == SOCKET_ERROR)//监听客户端,如果是基于UDP的,则不需要listen    
    {
        MessageBox(_T("开启监听失败"), _T("警告"));
        return;
    }
    MessageBox(_T("开始监听"), _T("通知"));

    //监听通过
    SOCKADDR_IN addrFrom;
    int len = sizeof(SOCKADDR);
    SOCKET ConnectSocket = accept(m_socket, (sockaddr*)&addrFrom, &len); //得到客户端的IP地址。

    char recvBuf[200] = { 0 };//获取客户端发送的消息  
    int retval = recv(ConnectSocket, recvBuf, 200, 0);
    if (SOCKET_ERROR == retval)
        return;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值