如何使用C++传送网络数据

Hello 大家好,我是stefan,今天给大家讲解下如何使用C++来通过TCp等网络协议传输数据

步骤如下:

1. 新建一个超大的 char *p 数组...大到足够容纳你所需要的数据为止
2. 将每一个string的内容放到这个 p数组里面.
   比如: 如果是 std::string , 就 strcpy(p,str.c_str());
         如果是 std::wstring ,就 memcpy(p,str.c_str(),str.size()*2)
                  或者先转化为 std::string ,再按std::string处理...
         如果是 char* 的字符串,就直接strcpy,
         如果是 wchar_t*的字符串,按 std::wstring 处理.
         如果是其他,如 CString , 分 UNICODE 和 非UNICODE ,按上面说的处理.
    解码的时候很简单,就直接定义一个 std::string str;
        然后 str= p;//假设是接收到的数据. 然后str就是第一个字符串.
        接着p的指针增加str的长度个单位,即 p+=str.size();
        接着继续解释第二个字符串.
   当然,对于 UNICODE 版本的字符串解释,则复杂一些...
  另外,上面提及的是不考虑字节顺序的.
       如果是需要考虑字节顺序的,请参考下面的 int 处理方式.
3. 将 int 整数放到 p 里面.
   如果不需要考虑字节顺序(即:假设通信双方都是windows系统),可以直接认为是char*处理.
       如: int i=10; memcpy(p,&i,sizeof(i)); 即可.
   如果是需要考虑直接顺序,则需要对这个int进行一定的编码,保证对方可以还原出这个数字出来.
       最简单的就是按字节处理.
       如: int i=10; 
       p[0] = (char)((i >>24)&0xff);//提取i的最高8位
       p[1] = (char)((i >>16)&0xff);
       p[2] = (char)((i >>8)&0xff);
       p[3] = (char)((i >>0)&0xff);//提取i的最低8位
   然后对方解码的时候也按照这个规则解码即可.

---------------
反正这个东西,说复杂其实不太复杂,说简单也不算简单.
关键是制定一种规则,使接收的一方可以还原出数据即可.至于这种规则是什么,由你自己决定,没什么标准. 
这个就叫通信协议.
如果你只是说纯粹要发送出去,不管对方能不能识别,那没有意义.
----------------
另外,我记得网上应该有一些已经封装好的类,不过我记不起叫什么名字了,可以自己找一下.

如何使用C++传送网络数据,布布扣,bubuko.com

如何使用C++传送网络数据

上一篇:字符串比较函数(c语言初学者试写)


下一篇:微信小程序开发框架整理