windows socket demo

我以一种商店对外提供服务的模式,来写出这个Demo。

服务:dmServer.cpp
#include <iostream>
#include <winsock2.h>
using namespace std;

int main(int argc, char *argv[])
{
    WSADATA wsd;
    WSAStartup(MAKEWORD(2, 2), &wsd);


    //  申请店面,负责对外的接头
    int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 


    //  店面地址
    string host = "127.0.0.1";
    int port = 8001;
    struct sockaddr_in addr;
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr(host.c_str());
    addr.sin_port = htons(port);


    //  注册本店
    bind(sock, (struct sockaddr *)(&addr), sizeof(addr));


    //  最大服务数量
    listen(sock, 5);


    //  等待客人中,交给小弟处理
    int workSock = accept(sock, NULL, NULL);


    //  小弟干活
    char buf[1000] = {0};
    memset( buf, 0, sizeof(buf));
    int length = recv(workSock, buf, sizeof(buf), 0);
    cout << buf << endl;


    //  结束服务
    closesocket(workSock);
    closesocket(sock);
    WSACleanup();

    return 0;
}



客户:dmClient.cpp
#include <iostream>
#include <winsock2.h>
using namespace std;

int main(int argc, char *argv[])
{
    WSADATA wsd;
    WSAStartup(MAKEWORD(2, 2), &wsd);

    //  我方接头人
    int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

    //  提供服务的商店地址
    string host = "127.0.0.1";
    int port = 8001;
    struct sockaddr_in addr;
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr(host.c_str());
    addr.sin_port = htons(port);


    //  打电话给对方
    connect(sock, (struct sockaddr *)(&addr), sizeof(addr));

    //  拨通后,聊天好不好。。
    string say = "我要那种服务...";
    send(sock, say.c_str(), say.length(), 0);


    //  对话完成
    closesocket(sock); 
    WSACleanup();

    return 0;
}

你可能感兴趣的:(C++,c,windows,socket,C#)