socket怎么样发送有struct结构的数据
send里面用的是char型的数据比如说
qq里面的
一个人有姓名,年龄,性别等等
想到像下面这样发送
|姓名|年龄|性别|
可是要是里面包含|就对不牢了

解决方案 »

  1.   

    typede struct 
    {
      char name[10];
      char passwd[10];
    }DEMOSTR;DEMOSTR demo;send(sockffd,&demo,sizeof(demo),0);
      

  2.   

    typede struct 
    {
      char name[10];
      char passwd[10];
    }DEMOSTR;DEMOSTR demo;send(sockffd,(const void *)&demo,sizeof(demo),0);
      

  3.   

    上面两位
    我用接受的数据取不到值啊
    SEND如你们所说
    int nReceived=m_pSocket->Receive(newFriend,BUFFER_SIZE,0);
    //newFriend=(MYFRIEND*)buffer;
    TRACE("用户名=%s\n",newFriend->Name);
      

  4.   

    MYFRIEND* newFriend =new  MYFRIEND;
    int nReceived=m_pSocket->Receive(newFriend,BUFFER_SIZE,0);
    TRACE("用户名=%s\n",newFriend->Name);
      

  5.   

    发送
    MYFRIEND* newFriend =new  MYFRIEND;
    newFriend->Name="XXX";
    int nReceived=m_pSocket->send(newFriend,BUFFER_SIZE);
      

  6.   

    发送数据
    MyMsg msgSend;
    ZeroMemory(&msgRead,sizeof(msgRead));
    int isend = 0;
    while(isend<sizeof(msgSend))
    {
    int nCharSend=send(ClientSock,(char*)(&msgSend+isend),sizeof(msgSend)-isend,0);
    isend+=nCharSend;
    if (WSAGetLastError()==SOCKET_ERROR)
    {
    //发送数据错误
    return FALSE;
    }
    }
    return TRUE;接收数据:
    MyMsg msgRead;
    ZeroMemory(&msgRead,sizeof(msgRead));int irecv = 0;
    while(irecv<sizeof(msgRead))
    {
    int nCharSend=recv(ClientSock,(char*)(&msgRead+irecv),sizeof(msgRead)-irecv,0);
    irecv+=nCharSend;
    if (WSAGetLastError()== SOCKET_ERROR)
    {
    //接收数据发生错误
    return 0;
    }
    }
    其中MyMsg是你的结构体名称。
    放分吧,我已经回答了你的问题:)
      

  7.   

    有点小错误,发送时可不能来个ZeroMemory操作,要不然要发的内容都没了
    发送数据
    MyMsg msgSend;
    //在这样里给你的结构成员赋值。
    int isend = 0;
    while(isend<sizeof(msgSend))
    {
    int nCharSend=send(ClientSock,(char*)(&msgSend+isend),sizeof(msgSend)-isend,0);
    isend+=nCharSend;
    if (WSAGetLastError()==SOCKET_ERROR)
    {
    //发送数据错误
    return FALSE;
    }
    }
    return TRUE;
      

  8.   

    typede struct 
    {
      char name[10];
      char passwd[10];
    }DEMOSTR;DEMOSTR demo;if(send(sockffd,(char *)&demo,sizeof(demo),0)==SOCKET_ERROR)
    如果这样还不ok的话,就没道理了