如何使用UDP接收NSE Feed [英] How to Receive NSE Feed Using UDP

查看:60
本文介绍了如何使用UDP接收NSE Feed的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hi
我想开发自己的应用程序,通过.net连接NSE。为此,我从NSE获得了IP地址,用户ID和密码。现在我知道.net可以交互IP协议。现在如何连接到NSE站点以通过UDP获取实时报价(Feed)。我想在.net中开发我的应用程序。程序是什么?是否需要额外的硬件?任何协议?

任何人都可以给我提示我如何连接该服务器并接收提要?

给我任何想法。这是非常紧急的。

Hi I want to develop my own application to connect with NSE through .net. for this I got a IP address,User Id and password from NSE. Now I know That .net can Interact IP protocol. Now How can I connect to NSE Sites to get Live quotes(Feed) via UDP. I want to develop my application in .net. What will be the Procedure? Is there any need of extra hardware? any protocol?
Can anybody give me Idea How can I connect with that Server and receive feed?
Give me any Idea. it's very urgent.

推荐答案

/*
 * 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>


我认为在这方面没有人会帮助你。我只能给你一些线索。

如果你想连接到NSE广播服务器,那么只需加入多播组(谷歌如何)你将开始接收数据包。之后你必须解码(参考NSE提供的文件,如何)这些数据包获得实时报价。







看,我不能给你整个解决方案。我刚给你一些线索。所以你至少可以开始。

[结束编辑]
I dont think anybody will help you in this regard. I can only give you some clue.
If you want to connect to NSE broadcast server then just join the multicast group (Google for how to) you will start receiving packets. After that you have to decode (refer to documents provided by NSE for how to ) those packets to get Live quotes.



See, I cannot give you whole solution. I just gave you some clue. So that you can at least start with.
[END EDIT]


你好Raghvendra Kumar Roy,



你能告诉我你到目前为止所做的IP /代码吗?也许我可以帮到你。



vikas_361 @ hotmail.com

Vikas
Hi Raghvendra Kumar Roy,

Can you provide me the IP / code you have done till now?. May be I could help you.

vikas_361 @ hotmail.com
Vikas


这篇关于如何使用UDP接收NSE Feed的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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