社区
网络编程
帖子详情
哪位高手做过网络层组播流媒体系统?有没有这样的开源代码参考一下,多谢了!
harezgq
2007-01-17 10:27:09
现在要做一个网络层组播流媒体系统,哪位高手给点思路?
...全文
514
11
打赏
收藏
哪位高手做过网络层组播流媒体系统?有没有这样的开源代码参考一下,多谢了!
现在要做一个网络层组播流媒体系统,哪位高手给点思路?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
crystal_heart
2007-01-25
打赏
举报
回复
up
lirengming
2007-01-25
打赏
举报
回复
www.openh323.org
http://www.voxgratia.org/downloads.html
harezgq
2007-01-23
打赏
举报
回复
up.
harezgq
2007-01-22
打赏
举报
回复
写了一个服务端和一个客户端程序;
客户端接不到组播数据;不知道什么原因
//server端
#include "winsock2.h"
#include <ws2tcpip.h>
#include "tpipv6.h" // For IPv6 Tech Preview.
#define MulticastAddress "224.0.0.8"
#define MulticastPort 25000
char sendbuf[6]="hello";
int numsend;
int iTTL=7;
SOCKET Sock,SockM; //多播套接字
DWORD cbRet;
bool bFlag,bJoin;
SOCKADDR_IN local,Remote,From; //分别指向本地、多播组和数据来源的IP地址与端口
int Fromlen;
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int iret;
wVersionRequested = MAKEWORD(2,2);
iret = WSAStartup(wVersionRequested, &wsaData); //初始化WinSock2资源
if(iret!= 0){
printf("不能加载Windows套接字动态链接库,MB_OK");
return;
}
if (LOBYTE(wsaData.wVersion) !=2 || HIBYTE(wsaData.wVersion) !=2){
printf("WinSock DLL不支持2.0版本,MB_OK");
WSACleanup( );
return;
}
//创建一个套接字
Sock=WSASocket(AF_INET,SOCK_DGRAM,IPPROTO_UDP,
(LPWSAPROTOCOL_INFO)NULL,0,WSA_FLAG_OVERLAPPED
| WSA_FLAG_MULTIPOINT_C_LEAF|WSA_FLAG_MULTIPOINT_D_LEAF);
//将套接字绑定到用户指定端口及默认的接口
memset(&local,0,sizeof(local));
local.sin_family=AF_INET;
local.sin_port=htons(MulticastPort);
local.sin_addr.s_addr=htonl(INADDR_ANY);
bind(Sock,(struct sockaddr FAR *)&local,sizeof(local));
//设置多播数据报传播范围(生存时间TTL)
WSAIoctl(Sock,SIO_MULTICAST_SCOPE,&iTTL,sizeof(int),
NULL,0,&cbRet,NULL,NULL);
memset(&Remote,0,sizeof(Remote));
Remote.sin_family=AF_INET;
Remote.sin_addr.s_addr=inet_addr(MulticastAddress);
Remote.sin_port=htons(MulticastPort);
//加入到指定的多播组,并指定作为发送者(JL_SENDER_ONLY)
/*
SockM=WSAJoinLeaf(Sock,(sockaddr*)&Remote,sizeof(Remote),
NULL,NULL,NULL,NULL,JL_SENDER_ONLY);
*/
while(1)
{
if (sendto(Sock,sendbuf,sizeof(sendbuf),0,(sockaddr*)&Remote,sizeof(Remote))==SOCKET_ERROR)
{
printf("sendto failed with: %d\n",WSAGetLastError());
closesocket(SockM);
closesocket(Sock);
WSACleanup();
return;
}
Sleep(20);
}
}
//客户端
#include "winsock2.h"
#include <ws2tcpip.h>
#include "tpipv6.h" // For IPv6 Tech Preview.
#define MulticastAddress "224.0.0.8"
#define MulticastPort 25000
char recvbuf[6];
int numsend;
int iTTL=7;
SOCKET Sock,SockM; //多播套接字
DWORD cbRet;
bool bFlag,bJoin;
SOCKADDR_IN local,Remote,From; //分别指向本地、多播组和数据来源的IP地址与端口
int Fromlen,ret;
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int iret;
wVersionRequested = MAKEWORD(2,2);
iret = WSAStartup(wVersionRequested, &wsaData); //初始化WinSock2资源
if(iret!= 0){
printf("不能加载Windows套接字动态链接库,MB_OK");
return;
}
if (LOBYTE(wsaData.wVersion) !=2 || HIBYTE(wsaData.wVersion) !=2){
printf("WinSock DLL不支持2.0版本,MB_OK");
WSACleanup( );
return;
}
//创建一个套接字
Sock=WSASocket(AF_INET,SOCK_DGRAM,IPPROTO_UDP,
(LPWSAPROTOCOL_INFO)NULL,0,WSA_FLAG_OVERLAPPED
| WSA_FLAG_MULTIPOINT_C_LEAF|WSA_FLAG_MULTIPOINT_D_LEAF);
//将套接字绑定到用户指定端口及默认的接口
memset(&local,0,sizeof(local));
local.sin_family=AF_INET;
local.sin_port=htons(MulticastPort);
local.sin_addr.s_addr=htonl(INADDR_ANY);
bind(Sock,(struct sockaddr FAR *)&local,sizeof(local));
//设置多播数据报传播范围(生存时间TTL)
WSAIoctl(Sock,SIO_MULTICAST_SCOPE,&iTTL,sizeof(int),
NULL,0,&cbRet,NULL,NULL);
memset(&Remote,0,sizeof(Remote));
Remote.sin_family=AF_INET;
Remote.sin_addr.s_addr=inet_addr(MulticastAddress);
Remote.sin_port=htons(MulticastPort);
//加入到指定的多播组,并指定为接收者(JL_RECEIVER_ONLY)
if((SockM=WSAJoinLeaf(Sock,(sockaddr*)&Remote,sizeof(Remote),
NULL,NULL,NULL,NULL,JL_RECEIVER_ONLY))==INVALID_SOCKET)
{
printf("WSAJoinLeaf() failed:%d\n",WSAGetLastError());
closesocket(Sock);
WSACleanup();
return;
}
while(1)
{
if ((ret = recvfrom(SockM,recvbuf,sizeof(recvbuf),0,(sockaddr *)&From,&Fromlen))==SOCKET_ERROR)
{
printf("recvfrom failed with:%d\n",WSAGetLastError());
closesocket(SockM);
closesocket(Sock);
WSACleanup();
return;
}
//AfxMessageBox(recvbuf);
if (strcmp(recvbuf,"hello")==0)
{
printf("client has received data");
break;
}
}
}
Estfania
2007-01-18
打赏
举报
回复
开源代码不是很清楚;
不过软件到有
harezgq
2007-01-18
打赏
举报
回复
再顶!
ajn_sailing
2007-01-18
打赏
举报
回复
up
stevphen
2007-01-18
打赏
举报
回复
关注
lr21shiji
2007-01-18
打赏
举报
回复
ding
wormwormwormworm
2007-01-18
打赏
举报
回复
这个不好找啊
gaooo
2007-01-18
打赏
举报
回复
gz
全面了解风控决策引擎
本文旨在帮助大家认识决策引擎,包括前台规则配置与后台技术搭建,另外提供几个比较不错的轻量级
开
源引擎供大家进一步学习。 全文总计1.7w字,因内容较长,可分四部分进行阅读: 1.决策引擎介绍(适用人员:还
没
...
阿ken的HTML、CSS的学习笔记_多
媒体
技术(笔记八)
通过这样的方式实现的音视频功能,不仅需要借助第三方插件而且实现代码复杂冗长,运用 HTML5 中新增的 video 标签和 audio 标签可以避免这样的问题。在 HTML5 语法中,video 标签用于为页面添加视频
android
开
源项目总结
一个强大的拉动刷新
开
源项目,支持各种控件下拉刷新,ListView、ViewPager、WevView、ExpandableListView、 GridView、ScrollView、Horizontal ScrollView、Fragment上下左右拉动刷新,比下面johannilsson那个只支持...
车辆控制中的“实时性”及其影响因素
交
流
群 |进“传感器群/滑板底盘群”请加微信号:xsh041388交
流
群 |进“域控制器群/操作
系统
群”...引言在最近一起有公
开
报道的辅助驾驶相关事故中,由于AEB(自动紧急制动
系统
)功能被怀疑
没
有起作用,又有一家车企...
[转]高负载并发网站架构分析
由于自己正在
做
一个高性能大用户量的论坛程序,对高性能高并发服务器架构比较感兴趣,于是在网上收集了不少这方面的资料和大家分享。希望能和大家交
流
msn: defender_ios@hotmail.com ——————————————...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章