【源码学习】之socket篇解决思路

【源码学习】之socket篇
该源码主要用于展示socket的使用,分别创建了2个控制台程序Server和Client
代码量很少,只有几十行,适用于新手学习了解用。

代码主要展示了如下内容:
- 套接字的初始化
- 绑定
- 监听
- 连接
- 发送
- 接收
- 关闭套接字
- 清理套接字

代码下载地址:http://download.****.net/detail/ccvoid_void/8526789

C/C++/MFC/VC技术交流学习群【197778914】欢迎您的加入!【源码学习】之socket篇解决思路

服务器部分:
#include <Winsock2.h>
#pragma comment(lib, "Ws2_32.lib")

#include <iostream>
using namespace std;

void main()
{
//初始化套接字
    WSADATA wsaData;
    WORD wVersion = MAKEWORD(1, 1);

    ::WSAStartup(wVersion, &wsaData);

    SOCKET socketSrv = ::socket(AF_INET, SOCK_STREAM, 0);

    SOCKADDR_IN addrSrv;
    addrSrv.sin_addr.S_un.S_addr = ::htonl(INADDR_ANY);
    addrSrv.sin_family = AF_INET;
    addrSrv.sin_port = ::htons(6000);
    
//绑定
    ::bind(socketSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));

//监听
    ::listen(socketSrv, 3);

    cout<<"初始完毕!开始接收数据!\r\nC/C++/VC/MFC交流学习群【197778914】欢迎你的加入!"<<endl;
       
    while(1)
{
        char sRecvBuf[256] = "";
SOCKADDR_IN addrClient;
int nLen = sizeof(SOCKADDR);
        SOCKET socketClient = ::accept(socketSrv, (SOCKADDR*)&addrClient, &nLen);
        ::recv(socketClient, sRecvBuf, sizeof(sRecvBuf), 0);

        cout<<"接收到的内容:"<<sRecvBuf<<endl;

        ::closesocket(socketClient);
    }//while(1)

    ::closesocket(socketSrv);

//清理套接字
    ::WSACleanup();

    system("pause");
}



客户端部分:
#include <Winsock2.h>
#pragma comment(lib, "Ws2_32.lib")

#include <iostream>
using namespace std;

void main()
{
//初始化套接字
    WSADATA wsaData;
    WORD wVersion = MAKEWORD(1, 1);

    ::WSAStartup(wVersion, &wsaData);

    SOCKADDR_IN addrSrv;
    addrSrv.sin_addr.S_un.S_addr = ::inet_addr("127.0.0.1");
    addrSrv.sin_family = AF_INET;
    addrSrv.sin_port = ::htons(6000);

    SOCKET socketClient = ::socket(AF_INET, SOCK_STREAM, 0);

//连接
    ::connect(socketClient, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));

    cout<<"初始完毕!准备发送数据!\r\nC/C++/VC/MFC交流学习群【197778914】欢迎你的加入!"<<endl;

    char sSend[128] = "Hello World!";
    ::send(socketClient, sSend, strlen(sSend), 0);

    ::closesocket(socketClient);

//清理套接字
    ::WSACleanup();

    system("pause");
}

------解决思路----------------------
很基础啊  适合初学者