本帖最后由 VisualEleven 于 2011-05-03 08:35:06 编辑

解决方案 »

  1.   

    关键是send这句代码怎么写啊,写的不对就编译不过啊
      

  2.   

    send 只能发送字节流,你的思路不对,比如
    send_data data;
    SOCKET s;
    ...
    send(s, (BYTE *)&data, sizeof(data), ...);
      

  3.   

    那要发我这个结构体的数据怎么写呀
    struct send_data
    {short start_flag;
    char cmd;
    int length;
    unsigned char msg[filesize];
      unsigned char extname[4];};
      

  4.   

    char sendbuffer[100];
    先把结构体内成员赋值,比如send_data.start_flag=10;send_data.cmd='A';
    然后填充sendbuffer   memcpy(sendbuffer, &send_data, sizeof(send_data));SOCKET s;
    send(s,sendbuffer,sizeof(sendbuffer),0);试试  不行就用sendto
      

  5.   

    不必使用 memcpy,直接强行转换成 BYTE* 发送就可以的
      

  6.   

    发送端:
    强转char*发送;
    接受端,send_data  data;memcpy(data,buffer(recv中的buffer),sizeof(send_data))就可以。
      

  7.   

    发送方:
    send_data data;
    send((BYTE*)&data,sizeof(data),其他参数);
    接收方:
    send_data data;
    recv((BYTE*)&data,sizeof(data),其他参数);当然这是最简单的写法,lz最好在发送方 接收方都设置一个缓冲区,发送方将data写入发送缓冲区
    接收方在缓冲区收到数据后再写入data
      

  8.   

    error C2664: 'send' : cannot convert parameter 2 from 'unsigned char *' to 'const char *'
      

  9.   

    那你就把 BYTE * 修改成 const char *
      

  10.   

    struct send_data
    {short start_flag;
    char cmd;
    int length;
    unsigned char msg[filesize];
      unsigned char extname[4];};send_data data;
    data.start_flag = ...
    data.cmd = ...
    data.length = ...
    memcpy(data.extname, ...);
    if(SOCKET_ERROR == send(SOCKET, (char*)&data, sizeof(data), 0))
    {
     // Error
     // WSAGetLastError();
    }