• C++ ProtoBuf小结


    Server:
    #include "stdafx.h"
    #include <stdio.h>
    #include <Winsock2.h>
    #include <windows.h>
    #include <string>
    
    #include "msg.pb.h"
    
    #pragma comment(lib,"ws2_32.lib")
    #pragma commen (lib,"libprotobuf.lib")
    
    using namespace std;
    int _tmain(int argc, _TCHAR* argv[])
    {
        WORD wVersionRequested;
        WSADATA wsaData;
        int err;
    
        wVersionRequested = MAKEWORD(1,1);
        err = WSAStartup(wVersionRequested,&wsaData);
        if ( err != 0)
            return 0;
        
        if ( LOBYTE( wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1)
        {
            WSACleanup();
            return 0;
        }
        
        SOCKET sockSrv = 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(8000);
    
        bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
        printf("Bind OK...
    ");
    
        listen(sockSrv,5);
        printf("Listen OK ...
    ");
    
        SOCKADDR_IN addrClient;
        int len = sizeof(SOCKADDR);
    
        while(1)
        {
            SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len);
            printf("Receive data...
    ");
            
            char recvBuf[500];
            memset(recvBuf,0,500);       
            recv(sockConn, recvBuf, 500, 0);
      
            test::Vo_CharacterInfo Info;
            Info.ParseFromString(string(recvBuf);
    
            closesocket(sockConn);
            printf("Close Socket...
    ");
        }
    
        system("pause");
        return 0;
    }
    Client:
     
    // Client.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "msg.pb.h"
    #include <stdio.h>
    #include <windows.h>
    #include <fstream>
    #include <string>
    
    #pragma comment(lib,"ws2_32.lib")
    #pragma comment(lib,"libprotobuf.lib")
    
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        WORD wVersionRequested;
        WSADATA wsaData;
        int err;
        wVersionRequested = MAKEWORD(1,1);
    
        err = WSAStartup( wVersionRequested, &wsaData);
        if ( err != 0)
        {
            return 0;
        }
        if ( LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion != 1))
        {
            WSACleanup();
            return 0;
        }
    
        SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0);
    
        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(8000);
        
        connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
        printf("Connect Successful...
    ");
    
          test::Vo_CharacterInfo Info;
          Info.set_charid(123);
          Info.set_charname("name");
    
        std::string info;
        Info.SerializeToString(&info);
    
    
        send(sockClient, info.data(), info.size(),0);
        printf("Send Successful...
    ");
       
    
        closesocket(sockClient);
        WSACleanup();
    
        system("pause");
        return 0;
    }

  • 相关阅读:
    Outline of the research(updated 8th,Aug)
    Similarity metrics(Updated Aug,8th)
    Experiments on the NYC dataset(updated 7th,Aug)
    Fused Matrix Factorization & some personal thoughts (Updated 1st,Aug,afternoon)
    Java——图片读取与存储
    Java——setBounds的用法以及居中的方式
    linux 常用命令整理----解压缩
    周一01.4安装PyCharm步骤
    周一01.2 计算机硬件&操作系统
    周一01.3Python多版本共存&pip环境变量设置
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318363.html
Copyright © 2020-2023  润新知