如何解析NSE广播的数据格式 [英] how to parse data format of NSE broadcast

查看:73
本文介绍了如何解析NSE广播的数据格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我想创建一个以数据包形式从NSE接收广播数据的应用程序,然后我发现这个数据是十六进制格式

04- 20-00-01-01-20-1A-04-59-5A-2A-2A-31-32-33-00-40-00-05-3A-32-0D-5B-20-20-1C- 28-40-28-03-02-F6-A7-24-00-80-C0-4C-01-22-90-34-20-A0-02-01-D2-00-64-0C-2B - D7-00-01-00-02-00-2C-4B-B9-00-00-2F-B7-2D-60-E1-45-40-0D-25-40-A5-59-40-46-图7B-00-35-00-02-03-46-40-75-B2-40-E4-60-00-41-8E-2F-AD-A0-2E-01-86-5F-A8-00- 04-7E-09-D8-5D-A3-00-A8-60-2E-1D-FB-5F-9E-00-0A-7E-00-71-5D-B7-41-DC-61-1D- 83-40-2D-C1-BE-04-24-5D-C6- A1-1E-0F-A2-40-2D-CB-A0-EE-07-D2-40-2D-D0-BC-03- 00-00-41-08-A8-B8-80-1F-10-2A-FC-E2-36-30-0C-40-0D-25-5D-C0-00-0C-01-2E-AE- 0D-B2-83-4C-04-02-77-29-00-05-3C-DC-7E-01-88-40-11-08-83-4F-05-3B-DC-36-03-图4C-40-D7-05-3C-B9-A2-2C-42-A7-05-3C-A0-C0-2D-AB-5D-87-C1-FD-11-40-2D-3C-CO- 5D-04-40-2D-0F-DD-7D-00-2E-3D-68-C4-3D-0F-40-2D-9A-A0-5E-02-03-40-2D-CC-CO-图5C-40-8E-3E-4E-C0-BD-1F-40-2D-80-DC-01-00-40-D3-83-A0-1F-D2-AC-40-9D-00-00- 76-73-96-00 -0D-6A-03-A7-05-7A-58-00-0E-09-D8-11-00-00-68-11-00-00-00-00-E0-FA-12-00-28 -C2-42-7E-98-00-01-00-21-01-00-00-00-00-00-00-E2-00-06-00-01-00-00-00-D9-8B -41-7E-88-10-47-7E-80​​-00-00-00-28-FB-12-00-3C-C2-42-7E-E9-C1-42-7E-08-FC-12 -00-98-00-01-00-00-00-00-00-00-00-00-00-01-00-00-00-00-00-00-00-F8-FA-12-00 -00-00-04-60-24-FC-12-00-8F-04-44-7E-38-FB-12-00-01-B4-42-7E-D8-93-61-00-00 -00-00-00-00-00-00-00-02-01-00-00-7C-FB-12-00-D4-13-73-74-B5-00-01-00-00-00 -00-00-01-00-00-00-D9-13-73-74-00-00-00-00-00-E0-FD-7F-02-01-00-00-00-00-3D -00-B5-00-01-00-50-FB-12-00-01-6E-02-EE-C4-FB-12-00-A6-F1-75-74-E0-13-73-74 -FF-FF-FF-FF-D9-13-73-74-72-B3-42-7E-00-00-00-00-01-00-00-00-18-FC-12-00-00 -00-00-00-B4-FC-12-00
但主要问题是我不知道如何解析这些数据以及如何知道字符的含义以及如何要将这些数据转换为有用的方式,我已经读出了NSE文件,它告诉第一个char是告诉数据是否被压缩但是我不知道哪个是o这些是第一个也是最后一个,如果任何人能够理解我在这些类型的应用中的问题和经验,请帮助我并建议我必须做什么,所以理解这个字符串



请通过此电子邮件发送给我id-

[删除电子邮件地址]



预付款

Abhishek Singh


I want to make an application that receive broadcast data from NSE in the form of packet, then i have found this data in hex format
04-20-00-01-01-20-1A-04-59-5A-2A-2A-31-32-33-00-40-00-05-3A-32-0D-5B-20-20-1C-28-40-28-03-02-F6-A7-24-00-80-C0-4C-01-22-90-34-20-A0-02-01-D2-00-64-0C-2B-D7-00-01-00-02-00-2C-4B-B9-00-00-2F-B7-2D-60-E1-45-40-0D-25-40-A5-59-40-46-7B-00-35-00-02-03-46-40-75-B2-40-E4-60-00-41-8E-2F-AD-A0-2E-01-86-5F-A8-00-04-7E-09-D8-5D-A3-00-A8-60-2E-1D-FB-5F-9E-00-0A-7E-00-71-5D-B7-41-DC-61-1D-83-40-2D-C1-BE-04-24-5D-C6-A1-1E-0F-A2-40-2D-CB-A0-EE-07-D2-40-2D-D0-BC-03-00-00-41-08-A8-B8-80-1F-10-2A-FC-E2-36-30-0C-40-0D-25-5D-C0-00-0C-01-2E-AE-0D-B2-83-4C-04-02-77-29-00-05-3C-DC-7E-01-88-40-11-08-83-4F-05-3B-DC-36-03-4C-40-D7-05-3C-B9-A2-2C-42-A7-05-3C-A0-C0-2D-AB-5D-87-C1-FD-11-40-2D-3C-C0-5D-04-40-2D-0F-DD-7D-00-2E-3D-68-C4-3D-0F-40-2D-9A-A0-5E-02-03-40-2D-CC-C0-5C-40-8E-3E-4E-C0-BD-1F-40-2D-80-DC-01-00-40-D3-83-A0-1F-D2-AC-40-9D-00-00-76-73-96-00-0D-6A-03-A7-05-7A-58-00-0E-09-D8-11-00-00-68-11-00-00-00-00-E0-FA-12-00-28-C2-42-7E-98-00-01-00-21-01-00-00-00-00-00-00-E2-00-06-00-01-00-00-00-D9-8B-41-7E-88-10-47-7E-80-00-00-00-28-FB-12-00-3C-C2-42-7E-E9-C1-42-7E-08-FC-12-00-98-00-01-00-00-00-00-00-00-00-00-00-01-00-00-00-00-00-00-00-F8-FA-12-00-00-00-04-60-24-FC-12-00-8F-04-44-7E-38-FB-12-00-01-B4-42-7E-D8-93-61-00-00-00-00-00-00-00-00-00-02-01-00-00-7C-FB-12-00-D4-13-73-74-B5-00-01-00-00-00-00-00-01-00-00-00-D9-13-73-74-00-00-00-00-00-E0-FD-7F-02-01-00-00-00-00-3D-00-B5-00-01-00-50-FB-12-00-01-6E-02-EE-C4-FB-12-00-A6-F1-75-74-E0-13-73-74-FF-FF-FF-FF-D9-13-73-74-72-B3-42-7E-00-00-00-00-01-00-00-00-18-FC-12-00-00-00-00-00-B4-FC-12-00
but main problem is that i don't know how to parse this data and how to know that what is the meaning of characters and how to convert this data in to useful manner , i have read out NSE document which tells that first char is tells data is compressed or not but i don't know that which of these is first and last, If any one can understand my problem and experience in these type of application please help me and suggest what i have to do so understand this string

please mail me at this e-mail id-
[EMail address removed]

Thanks in Advance
Abhishek Singh

推荐答案

*
 * File:   main.c
 * Author: root
 *
 * Created on May 17, 2011, 1:51 PM
 */

#include
#include
#include
#include
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "Include/lzo1z.h"

#define MAX_LEN 1024;

int main(int argc, char **argv)
{
    
    int sock;
    int flag_on = 1;
    struct sockaddr_in mc_addr;
    unsigned char recv_str[1024];
    int  recv_len;
    struct ip_mreq mc_req;
    char* mc_addr_str;
    unsigned short mc_port;
    struct sockaddr_in from_addr;
    unsigned int from_len;
    mc_addr_str = "233.1.1.11";
    mc_port     = 34330;
      
    if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
    {
        perror("socket() failed");
        exit(1);
    }

    if ((setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &flag_on, sizeof(flag_on))) < 0)
    {
        perror("setsockopt() failed");
        exit(1);
    }
    
    memset(&mc_addr,0,sizeof(mc_addr));
    mc_addr.sin_family = AF_INET;
    mc_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    mc_addr.sin_port = htons(mc_port);
    
    if((bind(sock,(struct sockaddr *) &mc_addr,sizeof(mc_addr))) < 0)
    {
        perror("bind() failed");
        exit(1);
    }
    
    mc_req.imr_multiaddr.s_addr = inet_addr(mc_addr_str);
    mc_req.imr_interface.s_addr = htonl(INADDR_ANY);
    
    if((setsockopt(sock,IPPROTO_IP,IP_ADD_MEMBERSHIP,(void*) &mc_req,sizeof(mc_req))) < 0)
    {
        perror("setsockopt() failed");
        exit(1);
    }
    
    
    for(;;)
    {
        memset(recv_str,0,sizeof(recv_str));
        from_len = sizeof(from_addr);
        memset(&from_addr,0,from_len);
        
       if((recv_len = recvfrom(sock, recv_str,1024,0,(struct sockaddr*)&mc_addr, &from_len))<0)                
        {
            perror("recvfrom() failed");
            exit(1);
        }
        short compLen=0;
        short NOP=0;
        memcpy(&compLen,recv_str+4,2);
        compLen = ntohs(compLen);
        if(compLen > 0)
        {
            memcpy(&NOP,recv_str+2,2);
            NOP=ntohs(NOP);
            int i=0;
           
            
            for(i=0;i<nop;i++)>
            {
                unsigned char src[compLen];
                memcpy(&src,recv_str+6,compLen);
                short src_len = compLen;
                unsigned int dst_len = 1024;
                unsigned char dst[1024];
                int rCode;
                unsigned int eCode=0;
                               
                
                rCode = lzo1z_decompress((lzo_bytep) src,(lzo_uint)src_len,(lzo_bytep) dst,(lzo_uintp)&dst_len,0);
                
               
            }
        }
    }
    
    if((setsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP,(void*)&mc_req, sizeof(mc_req))) < 0)
    {
        perror("setsocketopt() failed");
        exit(1);
        
    }
    close(sock);
    return 0;
}</unistd.h></string.h></stdlib.h></stdio.h>


嗨abhishek,

i我试图听nse multicast.when我设置nse组播组和端口没有数据来,但如果我改为一个单独的组播组和端口我从一个简单的发送测试线多播应用程序我的监听器应用程序获取该数据。



所以你能给出示例代码如何从nse广播中获取数据。



问候,

Abhirup
hi abhishek,
i am trying to listen nse multicast.when i set nse multicast group and port no data coming but if i change to a separate multicast group and port where i sending a test line from a simple multicast application my listener app getting that data.

so could you give sample code how to get data from nse broadcast.

Regards,
Abhirup


请给我发送如何从NSE Broadcaster获取数据的代码
please send me the code for how to get data frm NSE Broadcaster


这篇关于如何解析NSE广播的数据格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆