socket编程问题- 如何把字符串数据存入自定义的结构体之中

xifengshuo 2015-09-22 10:10:06
int ReceicvDataFunction(int sockClient)
{
char recvBuf[10000]={0}; // 创建接收数据的缓冲区数组
recv(sockClient,recvBuf,10000,0); // 接收数据并在下行打印
printf("%s\n",recvBuf); // 直接打印接收到的数据
return 0;
}

socket客户端,有一个字符数组能够接收到客户端传过来的数据,但是我现在想把recvBuf中的数据解析一下,然后放到自己定义的结构体中,该怎么办,求思路。
...全文
291 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-09-22
  • 打赏
  • 举报
回复
仅供参考:
void HexDump(char *buf,int len,int addr) {
    int i,j,k;
    char binstr[80];

    for (i=0;i<len;i++) {
        if (0==(i%16)) {
            sprintf(binstr,"%08x -",i+addr);
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        } else if (15==(i%16)) {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
            sprintf(binstr,"%s  ",binstr);
            for (j=i-15;j<=i;j++) {
                sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
            }
            printf("%s\n",binstr);
        } else {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        }
    }
    if (0!=(i%16)) {
        k=16-(i%16);
        for (j=0;j<k;j++) {
            sprintf(binstr,"%s   ",binstr);
        }
        sprintf(binstr,"%s  ",binstr);
        k=16-k;
        for (j=i-k;j<i;j++) {
            sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
        }
        printf("%s\n",binstr);
    }
}
  • 打赏
  • 举报
回复
比如你结构体中有一个int和一个char,可以在接收的时候

type.a =   *((int *)buf); //a为int
type.b = *(((char *)buf) + 2);//b为char,int 在前,char在后
jiqiang01234 2015-09-22
  • 打赏
  • 举报
回复
把接收到的是数据先放到缓冲区,然后解析。解析后的数据删掉,剩余的数据继续等待接收。
xifengshuo 2015-09-22
  • 打赏
  • 举报
回复
上面是socket客户端的一个函数,字符数组recvBuf能够接收到服务器端传过来的字符串格式的数据。 现在想把数组中的数据放到 自定义结构体中。
seanking1987 2015-09-22
  • 打赏
  • 举报
回复
ptr+memcpy

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧