zoukankan      html  css  js  c++  java
  • windows socket 数据简单结构化

    client

    struct DataPackage {
        int age;
        char name[32];
    };
    //结构化的网络消息
    int function07() {
        SOCKET sktCli = init("192.168.3.18", 8080);
        if (sktCli == INVALID_SOCKET) {
            return -1;
        }
    
        while (true) {
            printMenu();
            char szCmd[64] = { 0 };
            scanf("%s", szCmd);
            if (strcmp(szCmd, "exit") == 0) {
                printf("[client] exit ...
    ");
                break;
            }
            send(sktCli, szCmd, strlen(szCmd) + 1, 0);
    
            char szRecv[1024] = { 0 };
            int ret = recv(sktCli, szRecv, sizeof(szRecv), 0);
            if (ret <= 0) {
                printf("[client] server exit ...
    ");
                break;
            }
            DataPackage *p = (DataPackage*)szRecv;
            printf("[server] msg: age=%d name=%s
    ", p->age, p->name);
        }
    
        destroy(sktCli);
        return 0;
    }

    server

    struct DataPackage {
        int age;
        char name[32];
    };
    
    //结构化的网络消息
    int function07() {
        SOCKET sktServ = init("0.0.0.0", 8080);
        if (sktServ == INVALID_SOCKET) {
            return -1;
        }
    
        SOCKET sktCli = accept(sktServ, NULL, NULL);
        while (true) {
            char szCmd[64] = { 0 };
            int ret = recv(sktCli, szCmd, sizeof(szCmd), 0);
            if (ret == SOCKET_ERROR) {
                printf("[server] recv error ...
    ");
                break;
            }
            if (ret == 0) {
                printf("[client] exit ...
    ");
                break;
            }
            printf("[client] %s
    ", szCmd);
            char szMsg[1024];
            if (strcmp(szCmd, "getInfo") == 0) {
                DataPackage dp = {1000, "爱白菜的小昆虫"};
                send(sktCli, (const char *)&dp, sizeof(dp), 0);
            }
            else {
                sprintf(szMsg, "%s", "???.");
                send(sktCli, szMsg, strlen(szMsg) + 1, 0);
            }
        }
    
        destroy(sktServ);
        return 0;
    }
  • 相关阅读:
    Qt 学习
    Qt 串口连接
    GitKraken使用教程-基础部分(9)
    GitKraken使用教程-基础部分(8)
    GitKraken使用教程-基础部分(7)
    GitKraken使用教程-基础部分(6)
    GitKraken使用教程-基础部分(5)
    GitKraken使用教程-基础部分(4)
    GitKraken使用教程-基础部分(3)
    C++ 利用template给函数中的变量赋初值
  • 原文地址:https://www.cnblogs.com/xuqiulin/p/11437589.html
Copyright © 2011-2022 走看看