在多路视频中,UDP通信问题 ( 积分: 200 )

  • 主题发起人 主题发起人 xingkong97
  • 开始时间 开始时间
X

xingkong97

Unregistered / Unconfirmed
GUEST, unregistred user!
各位网络高手,小弟最近用DSHOW做一个项目,是关于视频直播的。视频直播共有三个频道,我做了服务器端和客户端,数据传输采用idUDPSercer控件,一个频道对应一个端口进行传输,
A频道传输至 12301 端口
B频道传输至 12303 端口
C频道传输至 12305 端口

然后在客户端采用一个UDP控件进行接收,当接受A频道时,客户端的UDP用12301作为默认端口,当接受B频道时,客户端的UDP用12303作为默认端口,当接受C频道时,客户端的UDP用12305作为默认端口.
切换时程序如下:
IDUDP1.active:=false;
IDUDP1.DefaultPort:=1230*;
IDUDP1.Active:=true;
然后告诉服务器当前接收端口为1230*,请服务器将数据传送到该端口。可是小弟发现第一次接收频道时没有任何问题,可是当切换频道时即改变客户端UDP端口时,要么仍然是第一次的频道,要不就停止传输,请问各位高手,有没有一个解决的方案啊。
另外,下面这些语句是什么意思啊。
BufferSize := $40000;
IdUDPServer1.Binding.SetSockOpt(Id_SOL_SOCKET, Id_SO_SNDBUF, PChar(@BufferSize), SizeOf(BufferSize));
BufferSize := $40000;
IdUDPServer1.Binding.SetSockOpt(Id_SOL_SOCKET, Id_SO_RCVBUF, PChar(@BufferSize), SizeOf(BufferSize));
 
你这样绑定端口试试看,你那样的方式是当前端口没有修改成功的。
IdUDPServer1.Active:=false;
IdUDPServer1.Bindings[0].IP:=Label3.Caption;
IdUDPServer1.Bindings[0].Port:=strtoint(Edit1.Text);
IdUDPServer1.DefaultPort:=strtoint(Edit1.Text);
IdUDPServer1.Active:=true;
 
关注
不好意思教教小弟怎么样?
那位大哥有这方面的资料吗(D通信方面,端口操作的)给小弟发过来 谢谢
junwuji2006@163.com
 
还不如每个端口用一个sock来传输。不切换
 
多人接受答案了。
 
后退
顶部