我正在尝试写一个通讯协议,它的桢内容里有16进制数,二进制数,长整型等.我的理解是在sand,receive命令里发出接收的都是ASCII码吧.那么要传这些数据,代码里数据类型怎么定呢?一些相关代码应该怎么写呢?谢谢!

解决方案 »

  1.   

    sand,receive, 你想收、发什么都行,不只简单的ascii你写的东西是基于TCP/IP的吧,不会是要自己写网络驱动吧,那工程可大了
      

  2.   

    "我的理解是在sand,receive命令里发出接收的都是ASCII码吧."呵呵, 那如果发送图形呢? 显然不是ASCII码的,   send accept recv 什么的, 参数都是缓冲区指针, 大小之类.写通信协议? admire一下, 工程是太大了, 再说工业标准都是tcp/ip  谁来支持你的协议? 呵呵, 用来试下手倒是不错, 呵呵
      

  3.   

    不管你要发送什么类型的数据,你都可以将他们转换成char类型发送,然后在接收方在按照自己定义的格式去读取就可以,你可以发送任何计算机可以存储的数据,跟是不是10进制,是不是BMP图象,在链路层以下,没有这些概念,而是计算机识别的01代码,我们说的什么结构,图象,声音等在TCP/IP协议栈中属于应用层的数据,其实到了TCP及其以下就没有这些概念了.所以你不用担心,我这里有个例子,如果需要的话,mail:[email protected]
      

  4.   

    char buffer[1024];
    struct mydata{
        int   i;
        char  ch[8];
        float f;
    }struct mydata * pdata = (struct mydata *)buffer;
     pdata->i = 10 ;
     memcpy(pdata->ch,"i love u",strlen("i love u"));
     pdata->f  = 1.3;
    UDP:
    sendto(buffer,sizeof(struct mydata),"192.9.200.203",3000);
    tcp:
      tcpsocket.send(buffer,sizeof(struct mydata),0);
      

  5.   

    同意anyiflyer(西门吹雪),数据类型用自己写的结构定义就行了.收发的时候按自己定义的格式读取和发送就行了.