2009-06-17 103 views
3

我的大学目前正在进行IPTV试用。要访问该服务,系统会要求您安装VLC Media Player,并通过它运行从大学内部网下载的每个代表一个频道的文件。如何以编程方式访问IPTV服务器?

这些文件的格式为:

#EXTM3U 
#EXTINF:0,ITV2 
udp://@238.255.0.6:2001 

这点我承认作为一个M3U播放列表文件。幸运的是,该文件包含托管服务的服务器的IP地址,访问它的端口以及协议,在本例中为UDP。

我的问题是,我怎样才能以编程方式访问服务?客户端是否与服务器进行了特定的握手?由于通过VLC媒体播放器可以简单地访问,因此没有使用专有协议,访问数据肯定是微不足道的?

我不会太过于以编程方式访问互联网;我知道在Java中可以构建一个Port模型的UDP。我会很感激Java的答案,但任何类似的语言都绰绰有余。

谢谢!

回答

5

它们是在交换机级别的特殊握手,它告诉交换机你是组播组的一部分,这样你也可以收到数据包。波纹管是注册和J2EE指南中的Java接收的UDP套接字

// join a Multicast group and send the group salutations 

InetAddress group = InetAddress.getByName("228.5.6.7"); 
MulticastSocket s = new MulticastSocket(6789); 
s.joinGroup(group); 
// get their responses! 
byte[] buf = new byte[1000]; 
DatagramPacket recv = new DatagramPacket(buf, buf.length); 
s.receive(recv); 
... 
// OK, I'm done talking - leave the group... 
s.leaveGroup(group); 

http://www.j2ee.me/j2se/1.4.2/docs/api/java/net/MulticastSocket.html

例子的一个例子

你需要做的是加入组播组的东西,然后就recv的包并将它们写入一个文件,然后我假设mpeg2,mpeg4或流发送将是您的机器上应该可以通过另一个程序播放的文件。