6月18日設置
Posted by No Name Ninja - 2010.03.23,Tue
private ListReadRTP()
{
Listlist = new List ();
Socket udpSocket = null;
try
{
/* Socket生成(UDP) */
// AddressFamily.InterNetwork : IP version 4 のアドレス
// SocketType.Dgram : データグラム
// ProtocolType.Udp : ユーザー データグラム プロトコル
udpSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
/* マルチキャストアドレス、マルチキャストポートを指定 */
String targetIp = "239.168.0.80";
int targetPort = 6310;
/* ネットワークエンドポイント */
IPEndPoint localhostIpEnd = new IPEndPoint(IPAddress.Any, targetPort);
/* Socketオプション 受信タイムアウト(=1500ミリ秒) */
udpSocket.SetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.ReceiveTimeout, 1500);
/* Socketオプション Nagleアルゴリズムを無効 */
udpSocket.SetSocketOption(SocketOptionLevel.Udp,
SocketOptionName.NoDelay, 1);
/* Socketオプション 使用済みアドレスにソケットのバインドを許可 */
udpSocket.SetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.ReuseAddress, 1);
/* ネットワークエンドポイントをバインド */
udpSocket.Bind(localhostIpEnd);
/* マルチキャストグループに参加するIPAddressを指定 */
MulticastOption mcastOpt = new MulticastOption(IPAddress.Parse(targetIp));
/* Socketオプション IPグループメンバーシップを追加 */
udpSocket.SetSocketOption(SocketOptionLevel.IP,
SocketOptionName.AddMembership, mcastOpt);
/* ネットワークアドレス識別 */
EndPoint localEndPoint = (EndPoint)localhostIpEnd;
/* 受信 */
for (int i = 0; i < 400; i++)
{
byte[] recvByte = new byte[10000];
int byteReceived = udpSocket.ReceiveFrom(recvByte, ref localEndPoint);
byte[] tmpByte = new byte[byteReceived];
Array.Copy(recvByte, 0, tmpByte, 0, byteReceived);
list.Add(tmpByte);
}
}
catch (Exception ex)
{
logger.Error("ReadRTP:" + ex.Message);
throw new Exception();
}
finally
{
udpSocket.Close();
}
return list;
}
#UdpClientクラスを使っていたが、同一ポートを使いまわしできなかったので、
#Socketクラスを使うことにした
PR
Comments
Post a Comment
カレンダー
カテゴリー
フリーエリア
最新コメント
[05/16 backlink service]
最新記事
(09/18)
(11/17)
(10/03)
(07/21)
(07/20)
最新トラックバック
プロフィール
HN:
No Name Ninja
性別:
非公開
ブログ内検索
最古記事
カウンター
アクセス解析
Template by mavericyard*
Powered by "Samurai Factory"
Powered by "Samurai Factory"