zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    C# DataGridView显示行号的三种方法
    jQuery之前端国际化jQuery.i18n.properties
    大龄程序员的未来在何方
    【翻译】HTML5开发——轻量级Web Database存储库html5sql.js
    HBuilder webApp开发 Websql增删改查操作
    JS 互相调用iframe页面中js方法、VUE里 iframe 互调方法
    工具,百度编辑器 UEditor 使用实例化
    html 表格head头部不动 body部分滚动,每格宽同内容增加
    JS 正则收集(邮箱验证等)
    jQuery,title、仿title功能整理
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318363.html
Copyright © 2011-2022 走看看