LR socket接收数据 标准函数,结构体解析

//接收 
DWORD RecvBuf(char* cRecvBuf,char* cSocketName,char* cBufName)
{
    int ret=0;
    char * cRecvdata=0;
    int iRecvdatalen=0;
    DWORD begin=0,cur=0;
    begin=clock();
    while(1)
    {
        ret=lrs_receive(cSocketName,cBufName,LrsLastArg);    
        switch(ret)
        {
        case 0:
        case LRS_RECV_MISMATCH :
            ret=lrs_get_last_received_buffer(cSocketName,&cRecvdata,&iRecvdatalen);
            if(ret)
            {
                lr_error_message("last_recv获取接收缓冲区出错,错误码:%d",ret);
                lrs_free_buffer(cRecvdata);
                return ERROR;
            }
            if(iRecvdatalen)
            {
memcpy(cRecvBuf,cRecvdata,iRecvdatalen);
                lrs_free_buffer(cRecvdata);
                return SUCCESS;
            }
            cur=clock();
            if((cur-begin)>=10000)
            {
                lr_error_message ("接收超时,接收等待时间=%d毫秒",cur-begin);
                return ERROR;
            }
            continue;
        default:
            lr_error_message ("recv接收数据出错,错误码:%d",ret);
            return ERROR;
        }//end switch
    }//end while
    return SUCCESS;
}

ret=RecvBuf(cRecvBuf,"socket0","buf10");
lr_error_message("get string :%s",cRecvBuf);
pHead=(Head *)cRecvBuf;
lr_error_message("get string :%d",pHead->iPackageType);

注:需要在data里注意

recv buf10 12

时间: 2024-10-05 11:48:16

LR socket接收数据 标准函数,结构体解析的相关文章

Z-stack关键结构体解析

OSAL的消息队列 每一个消息都包含一个消息头osal_msg_hdr_t和用户自定义的消息,osal_msg_hdr_t结构体定义如下: typedef struct { void *next; uint16 len; uint8 dest_id; } osal_msg_hdr_t; 在事件处理函数SampleApp_ProcessEvent()中,从消息队列中接收到一个消息,后才调用SampleApp_MessageMSGCB,接收到的消息中如何就包含了用户接收的数据消息呢? 是这样子的:每

二、网编之初识Socket套接字结构体

二.初识Socket套接字结构体 1.通用套接字结构体类型 struct sockaddr { sa_family_t sa_family; //协议簇 char sa_data[14]; //协议簇数据 } 通用套接字结构体可以在不同的协议簇之间进行强制转化,Socket网络编程中几乎所有套接字API函数的形参都是通用套接字结构体struct sockaddr. 存在问题: 通用套接字结构体对编程的角度来说,设置很不方便,我们以以太网协议来说,当要设置端口号.IP地址等,那么我需要将端口号与I

QT: QByteArray储存二进制数据(包括结构体,自定义QT对象)

因为利用QByteArray可以很方便的利用其API对内存数据进行访问和修改, 构建数据库blob字段时必不可少; 那如何向blob内写入自定义的结构体和类 1. 利用memcpy拷贝内存数据 //自定义person结构体 Cpp代码   typedef struct { int age; char name[20]; }Person; //向QByteArray写入多个结构体 void writeStruct() { QByteArray ba; ba.resize(2*sizeof(Pers

golang 兼容不同json结构体解析实践

线上服务器,同一个web接口有时需要兼容不同版本的结构体.这种情况思路是使用interface{}接收任意类型数据,结合reflect包处理. 如下,http接口调用者会传入不同的json结构数据(单体结构或切片结构): type ReqStu struct { XXX struct { //XXX结构为单体 AAA string `json:"aaa"` BBB string `json:"bbb"` CCC string `json:"ccc"

C与C# socket 跨平台通讯传输结构体

最近需要写一个C组成的服务器端与C#的客户端进行交互的软件,刚开始写的时候发现C#端解析时候出现了故障,经过仔细研究后发现原因是发送方传输太快,出现了所谓粘包的现象.也就是在C#端的Receive().这个函数返回的是多个结构体连起来的数据,这当然是无法解析的.我的解决方案如下: List<byte[]> listb = new List<byte[]>(); .......... int recv = newclient.Receive(b1); for (int x = 0;

Qt socket中怎么传结构体?

直接发送和接收结构体,例如:struct A {...};struct A objectA; 发送的时候: tcpSocket->write((char *)&objectA, sizeof(objectA));  接收的时候:struct A objectB;tcpSocket->read((char *)&objectA, sizeof(objectA)); http://blog.csdn.net/emdfans/article/details/23869325

file_operations结构体解析 1

注:学了这么长时间了,还没有好好看看 file_operations机构体,这其中还有很多的东西,当你学着学着的时候,就会用到这里面的一些系统调用对应的函数了,我在网上搜索之后,记录如下,一边将来查看..... 前沿:这些东西估计对你有用 linux驱动程序中最重要的涉及3个重要的内核数据结构,分别为file_operations,file和inode. 在linux中inode结构用于表示文件,而file结构则表示打开的文件的描述,因为对于单个文件而言可能会有许多个表示打开的文件的描述符,因而

QByteArray储存二进制数据(包括结构体,自定义QT对象)

因为利用QByteArray可以很方便的利用其API对内存数据进行访问和修改, 构建数据库blob字段时必不可少; 那如何向blob内写入自定义的结构体和类 1. 利用memcpy拷贝内存数据 //自定义person结构体 Cpp代码   typedef struct { int age; char name[20]; }Person; //向QByteArray写入多个结构体 void writeStruct() { QByteArray ba; ba.resize(2*sizeof(Pers

字符串挖掘数据到结构体

1 #include <iostream> 2 #include <stdlib.h> 3 #include <string.h> 4 5 char str[1024]="569603080----zj123456789 \ 6 94940443----zj123456789 7 260024036----zj1456789 8 707611428----zj123456789 9 793516568----zj123456789 10 280105138--