C#實現組播源及客戶端
組播源:
using System;
using System.Net;
using System.Net.Sockets;
namespace multiCastSend
{
class send
{
send(string mcastGroup, string port, string ttl, string rep)
{
IPAddress ip;
try
{
Console.WriteLine("MCAST Send on Group: {0} Port: {1} TTL: {2}",mcastGroup,port,ttl);
ip=IPAddress.Parse(mcastGroup);
Socket s=new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
s.SetSocketOption(SocketOptionLevel.IP,
SocketOptionName.AddMembership, new MulticastOption(ip));
s.SetSocketOption(SocketOptionLevel.IP,
SocketOptionName.MulticastTimeToLive, int.Parse(ttl));
byte[] b=new byte[10];
for(int x=0;x<b.Length;x++) b[x]=(byte)(x+65);
IPEndPoint ipep=new IPEndPoint(IPAddress.Parse(mcastGroup),int.Parse(port));
Console.WriteLine("Connecting...");
s.Connect(ipep);
for(int x=0;x<int.Parse(rep);x++) {
Console.WriteLine("Sending ABCDEFGHIJ...");
s.Send(b,b.Length,SocketFlags.None);
}
Console.WriteLine("Closing Connection...");
s.Close();
}
catch(System.Exception e) { Console.Error.WriteLine(e.Message); }
}
static void Main(string[] args)
{
new send("224.5.6.7", "5000", "1", "2");
}
}
}
客戶端:
using System.Net.Sockets;
using System.Net;
using System;
namespace multiCastRecv
{
class recv
{
recv(string mcastGroup, string port)
{
Socket s=new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint ipep=new IPEndPoint(IPAddress.Any,int.Parse(port));
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
s.Bind(ipep);
IPAddress ip=IPAddress.Parse(mcastGroup);
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip,IPAddress.Any));
while(true)
{
byte[] b=new byte[10];
<span style="white-space:pre"> </span>Console.WriteLine("Waiting for data..");
s.Receive(b);
string str = System.Text.Encoding.ASCII.GetString(b,0,b.Length);
Console.WriteLine("RX: " + str.Trim());
}
<span style="white-space:pre"> </span>s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.DropMembership, new MulticastOption(ip,IPAddress.Any));
<span style="white-space:pre"> </span>s.Close();
}
public static void Main(string[] args)
{
new recv("224.5.6.7","5000");
}
}
}
相關文章
- C#實現任意源組播與特定源組播C#
- c#實現redis客戶端(一)C#Redis客戶端
- Istio 中實現客戶端源 IP 的保持客戶端
- Java建立WebService服務及客戶端實現JavaWeb客戶端
- C# MQTT客戶端C#MQQT客戶端
- Java建立WebService服務及客戶端實現(轉)JavaWeb客戶端
- 客戶端骨架屏實現客戶端
- C# 客戶端程式呼叫外部程式的三種實現C#客戶端
- Redis的釋出訂閱及.NET客戶端實現Redis客戶端
- jQuery實現客戶端CheckAll功能jQuery客戶端
- Nacos - 客戶端心跳續約及客戶端總結客戶端
- MQTT 客戶端應用及常見問題(C#)MQQT客戶端C#
- c# 獲取客戶端IPC#客戶端
- 百度翻譯API的C#客戶端實現過程APIC#客戶端
- golang實現tcp客戶端服務端程式GolangTCP客戶端服務端
- Redis的Pub/Sub客戶端實現Redis客戶端
- 網頁SSH客戶端的實現網頁客戶端
- Android開源mvp專案,實現玩Android客戶端AndroidMVP客戶端
- C#版Nebula客戶端編譯C#客戶端編譯
- Android實現Thrift服務端與客戶端Android服務端客戶端
- Go 實現簡易的 Redis 客戶端GoRedis客戶端
- IM撤回訊息-iOS客戶端實現iOS客戶端
- FTP客戶端c程式碼功能實現FTP客戶端C程式
- Android-TCP客戶端的實現AndroidTCP客戶端
- Vue實現騰訊視訊Mac客戶端VueMac客戶端
- 實現客戶端加密,後臺解密薦客戶端加密解密
- zookeeper 開源客戶端ZkClient使用客戶端client
- zookeeper 開源客戶端Curator使用客戶端
- 實現客戶端與服務端的HTTP通訊客戶端服務端HTTP
- Elasticsearch及java客戶端jest使用ElasticsearchJava客戶端
- Redis 非同步客戶端選型及落地實踐Redis非同步客戶端
- C#之使用CefSharp建立客戶端C#客戶端
- Redis 設計與實現 (四)--事件、客戶端Redis事件客戶端
- 使用Oracle客戶端wallet實現匿名登入Oracle客戶端
- pycurl實現hadoop的客戶端功能薦Hadoop客戶端
- OAuth客戶端開源JDK:AppAuthOAuth客戶端JDKAPP
- python爬蟲實踐: 豆瓣小組命令列客戶端Python爬蟲命令列客戶端
- Qt實現網路聊天室(客戶端,服務端)QT客戶端服務端