zoukankan      html  css  js  c++  java
  • TCP通讯socket自定义协议的实现

    转发(JAVA):http://blog.csdn.net/u010818425/article/details/53448817

        一个简单的自定义通信协议(socket),http://blog.csdn.net/lincyang/article/details/6109076

        http://vtrtbb.iteye.com/blog/849336

        socket编程,实先数据包的转发,C语言版   https://zhidao.baidu.com/question/588813998.html

        socket 编程之大小端字节序  http://blog.csdn.net/e_wsq/article/details/17495365

    socket传送数据,一般来讲是char型的,如何传送我们需要的数据类型勒?
    
    1.结构体;2, Json序列化, 3.  定义一个class 。
    
    1.结构体
    
    相对来说简单点,看看网上的一个例子:
    
    假设需要传送的结构体如下:
    
    struct person{
    
    char name[20];
    
    int age;
    
    float high;
    
    };
    
    可在发送数据的地方对数据进行处理,将其转换成一个字符串进行传送,而在接受方定义相同的结构体对这个字符串进行解析即可。
    
    发送方代码如下:
    
    char temp[100];    //传送的字符串
    
    struct person p1; //声明一个需要传送的结构体
    
    //以下是结构体的初始化信息
    
    p1.age = 10;
    
    p1.high = 1.80f;
    
    strcpy(p1.name,"zhangsan",sizeof(p1.name));
    
    memset(temp,0,sizeof(temp));  //对该内存段进行清
    
    memcpy(temp,&p1,sizeof(person));  //把这个结构体中的信息从内存中读入到字符串temp中
    
    //接下来传送temp这个字符串就可以了
    
    
    sendto(sock,temp,sizeof(person),0,(SOCKADDR*)&addSer,sizeof(SOCKADDR));
    
     //这样这个结构体的信息就发送到addSer相应的套接字了
    
     
    
    接收方代码如下:
    
    同样需要定义字符串和相同的结构体对象
    
    char temp[100];    //传送的字符串
    
    struct person p2; //声明一个存放接收信息的结构体
    
    memset(temp,0,sizeof(temp)); //清内存
    
    //下面是接收字符串的代码
    
     recv(clientSocket,temp,101,0);
    
    //下面对字符串信息进行还原,将其变成我们的结构体数据
    
    memcpy(&p2,temp,sizeof(person));  //解析过程,将字符串的内容写入到p2所在内存完成解析
    
    下面就可以对p2中的数据进行各种操作了,也完成了结构体数据的传送。
    
    2. Json序列化
    
    很显然上面若是很复杂,结构体是不能够搞定的!Json序列化是一个好的东西。
    
    从原理上来讲就是你在传递你的数据的时候。按照Json数据的key告诉他数据的类型,按照Json的value告诉数据的值。就这样,于是乎就可以传过去了。
    
    C++需要一个jsoncpp的文件。具体的操作Google吧!
    
    3.定义一个class
    
    这是我今天上午发现的,原来定义一个类,再将它指针操作就可以发过去了。这种方法真是太帅了!
    
    让我也想到,第一种方法也可以取地址发过去吧!!

       TCP/IP网络数据的封包和解包 http://blog.csdn.net/dai_jing/article/details/17914445

       Linux网络编程常见问题总结: http://blog.csdn.net/a_ran/article/details/44101065

    搜索方式:socket自定义数据包

  • 相关阅读:
    加密与解密学习笔记3-Windows与Unicode
    加密与解密学习笔记2-windows API函数
    加密与解密学习笔记1-文本编码方式
    python3基础知识自学笔记4-流程控制、迭代器、生成器
    python3基础知识自学笔记3-集合字典元组
    python3基础知识自学笔记2-列表
    在单链表按升序插入一个值
    [转]设置好ftp后用xftp连接提示无法打开,无法显示远程文件夹
    删除底部"自豪地采用 WordPress"
    win7一体机放音乐时只有音乐,人声特别小怎么回事
  • 原文地址:https://www.cnblogs.com/yyx1-1/p/6132113.html
Copyright © 2011-2022 走看看