比如我要发送:0xFFFFFFFF+0xF0000000+0xF0000001+0xF0000002
这样16个字节的数据,我该如何写,我用send只支持字符啊,还有别的函数吗?
对方接到我的数据后,还要给我发送一个应答的16个字节,我需要判断前面4个字节,该如何写。
麻烦详细点,谢谢。

解决方案 »

  1.   

    byte pData[16] = {};
    Send((char*)byte...);recv(..pData..);
      

  2.   

    // 发送
    int data[4] = {0xFFFFFFFF, 0xF0000000, 0xF0000001, 0xF0000002};
    send(s, (char*)data, sizeof(data), 0);// 接收
    char data2[16];
    int n = recv(s, data2, sizeof(data2), 0);
    // 判断
    int f = *(int*)data2;
    if (f > 0)
    {
    }//一般是自定义数据包,如
    struct packet {
    int a;
    int b;
    int c;
    char str[10];
    //其它字段
    }send(s, (char*)packet, sizeof(packet), 0);
    recv(s, (char*)packet, sizeof(packet), 0);
      

  3.   

    // 发送
    int data[4] = {0xFFFFFFFF, 0xF0000000, 0xF0000001, 0xF0000002};
    send(s, (char*)data, sizeof(data), 0);
     
    // 接收
    int data2[4]
    int n = recv(s, (char*)data2, sizeof(data2), 0);
    // 判断
    if (data2[0] > 0)
    {
    }
     
    //一般是自定义数据包,如
    struct _packet {
    int a;
    int b;
    int c;
    int d;
    //char str[10];
    //其它字段
    } packet, packet2;packet.a = 0xFFFFFFFF;
    packet.b = 0xF0000000;
    packet.c = 0xF0000001;
    packet.d = 0xF0000002;
    send(s, (char*)packet, sizeof(packet), 0);
    //...
    recv(s, (char*)packet2, sizeof(packet2), 0);
    if (packet2.a > 0)
    {
    }
      

  4.   

    转成网络字节序后,拷贝到内存中发送,很多协议都有这种处理,这有一些socket例子,自己看吧:
    http://download.csdn.net/detail/geoff08zhang/4571358
      

  5.   

    BYTE buffer[] = ...;
    send/sendto(SOCKET, buffer, sizeof(buffer), ...);
      

  6.   


    send 的第二个参数 不是 const char* 吗,
    那我定义的 BYTE变量,传进去,不是有溢出吗。VC 提示 warning,const unsigned it to unsigned char.
      

  7.   


    send的第二个参数不是 const char* 么,结构体传不进去啊。int 传进去,没有数据溢出么?
      

  8.   

    明白了,有点太拿来主义了。自己思考一下就懂了。
    第二个参数的char* 是配合 第三个参数的长度的。
    所以,如果是结构体,可以用&取出地址,转换成char*。谢谢大家,结贴给分。