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");
}
}
}
相關文章
- Istio 中實現客戶端源 IP 的保持客戶端
- C# HTTP實現斷點續傳客戶端和服務端C#HTTP斷點客戶端服務端
- C# MQTT客戶端C#MQQT客戶端
- C# 客戶端程式呼叫外部程式的三種實現C#客戶端
- 客戶端骨架屏實現客戶端
- Android開源mvp專案,實現玩Android客戶端AndroidMVP客戶端
- jQuery實現客戶端CheckAll功能jQuery客戶端
- Nacos - 客戶端心跳續約及客戶端總結客戶端
- c# 獲取客戶端IPC#客戶端
- 如何利用sockserver模組程式設計實現客戶端併發Server程式設計客戶端
- golang實現tcp客戶端服務端程式GolangTCP客戶端服務端
- Redis的Pub/Sub客戶端實現Redis客戶端
- 網頁SSH客戶端的實現網頁客戶端
- C#之使用CefSharp建立客戶端C#客戶端
- C#版Nebula客戶端編譯C#客戶端編譯
- Go 實現簡易的 Redis 客戶端GoRedis客戶端
- IM撤回訊息-iOS客戶端實現iOS客戶端
- 03. 實現客戶端應用程式客戶端
- FTP客戶端c程式碼功能實現FTP客戶端C程式
- 驢媽媽客戶端頻道頁模組化設計思路及實踐客戶端
- OAuth客戶端開源JDK:AppAuthOAuth客戶端JDKAPP
- Redis 非同步客戶端選型及落地實踐Redis非同步客戶端
- Golang 實現 Redis(6): 實現 pipeline 模式的 redis 客戶端GolangRedis模式客戶端
- 實現客戶端與服務端的HTTP通訊客戶端服務端HTTP
- python爬蟲實踐: 豆瓣小組命令列客戶端Python爬蟲命令列客戶端
- 使用 Golang 實現 appium/WebDriverAgent 的客戶端庫GolangAPPWeb客戶端
- python 實現 TCP、UDP 客戶端最簡流程PythonTCPUDP客戶端
- RetrofitJs – TypeScript實現的宣告式HTTP客戶端JSTypeScriptHTTP客戶端
- SpringBoot中HTTP高效能客戶端實現Spring BootHTTP客戶端
- Jmeter的客戶端實現與Keep-AliveJMeter客戶端Keep-Alive
- Redis 6.0 客戶端快取的伺服器端實現Redis客戶端快取伺服器
- 利用tirpc庫實現簡單的客戶端和服務端RPC客戶端服務端
- Go基於gRPC實現客戶端連入服務端GoRPC客戶端服務端
- Qt實現網路聊天室(客戶端,服務端)QT客戶端服務端
- kubernetes 客戶端KubeClient使用及常用api客戶端clientAPI
- C語言透過socket實現TCP客戶端C語言TCP客戶端
- 在 WPF 客戶端實現 AOP 和介面快取客戶端快取
- redis客戶端實現高可用讀寫分離Redis客戶端
- 在容器服務中獲取客戶端真實源 IP客戶端