1. 程式人生 > >C#實現組播源及客戶端

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#實現客戶

組播源: using System; using System.Net; using System.Net.Sockets; namespace multiCastSend { class send { send(string mcastGroup, strin

Unity使用C#實現簡單Scoket連線服務客戶通訊

簡介:網路程式設計是個很有意思的事情,偶然翻出來很久之前剛開始看Socket的時候寫的一個例項,貼出來吧Unity中實現簡單的Socket連線,c#中提供了豐富的API,直接上程式碼。服務端程式碼: Thread connectThread;//當前服務端監聽子執行緒

Windows server 2012 NTP配置,實現成員服務器客戶時間與域控制器時間同步

ges 域控制器 pad 右鍵 多個 控制器 lint 命令 解決方法 近期,發現公司域成員用戶時間與域服務器時間不同步 ,要實現:1、域內成員服務器及域內客戶端與域內NTP服務器同步 ,2、域NTP服務器當做客戶端與外網NTP服務器同步(配置Windows 時間服務以使用

Linux環境下伺服器利用來獲取客戶IP

單播是兩個主機之間端對端通訊(比如TCP、UDP通訊),而廣播用於一個主機對整個區域網中所有主機的通訊。單播和廣播是兩個極端,要麼對一個主機通訊,要麼對區域網內所有主機通訊。然而在實際情況下,比如要獲取區域網內獲取執行特殊任務主機IP,單播顯然不適用,因為單播必須首先要知道通

(轉)服務使用c++實現websocket協議解析通信

nec req 和數 http響應 表示 new base64 枚舉 unsigned 轉自:http://blog.csdn.net/grafx/article/details/54234518 WebSocket 設計出來的目的就是要使客戶端瀏覽器具備像

JAX-RS RESTful webservice 服務客戶實現(基於HTTPS雙向認證)

在ApacheCXF的Sample裡以及網上很多有關RESTful HTTPS雙向認證的文章介紹僅僅是理論,沒有涉及實際環境的實現(客戶端和服務端都是localhost);這幾天使用Apache的CXF以及 Apache portable HttpClient實現跨IP的J

WCF心跳判斷服務客戶是否掉線並實現重連線

本篇文章將通過一個例項實現對WCF中針對服務端以及客戶端是否掉線進行判斷;若掉線時伺服器或客戶端又線上時將實現自動重連;將通過WCF的雙工知識以及相應的心跳包來實現此功能; 首先了解一下本例項的一個分層架構圖;相信瞭解WCF對這個分層法肯定都很瞭解;其中Client為客

Linux下DHCP協議解析客戶原始碼實現

Option ID Length(位元組) 描述 1 4 Subnet Mask 3 n*4 Router(閘道器) 6 n*4 DNS Server 7 n*4 Log Server 26 2 Int

centos7搭建svn服務器客戶設置

步驟 避免 names asi cat plain groups against none centos7貌似預裝了svn服務(有待確認),因此我們直接啟動該服務即可一、svn服務端配置(服務器IP假設為192.168.100.1)步驟1:創建存放代碼庫目錄mkdir -p

80211 速率轉單

表示 網絡接口 通過 sage tca 提高 解決方案 所有 ast 轉:http://jingyan.baidu.com/article/ff411625963a7912e4823789.html WLAN無線網絡理論上就是實現一個二層的接入網絡,而這個二層網絡通常直

Redis交互編程語言客戶

blog .com 交互 down head gpo header div top Redis Desktop Manager https://redisdesktop.com/download Redis Clients https://redis.io/c

第七屆藍橋杯省賽C/C++B賽題答案

part 實現 void 整數 三層 在一起 idt mage 算法; 第一題 【題目】 煤球數目 有一堆煤球,堆成三角棱錐形。具體:第一層放1個,第二層3個(排列成三角形),第三層6個(排列成三角形),第四層10個(排列成三角形),....如果一共有100層,共有多少個煤

[RHEL 7]ISCSI服務客戶連接配置

防火 root inline 磁盤 fdisk -l str att 斷開 linux lvm 環境RHEL7.4 1.搭建服務器端主機環境 網絡配置 網卡eth0 10.0.0.1 網卡eth1 10.1.0.1 網卡eth2 10.2.0.1 網卡eth3 10

webservice服務客戶 編程 - 入門

ktr return stat XML ext rpc 工具 瀏覽器 控制 開發工具   eclipse 建立一個簡單的webservice服務 1 創建服務   (1)創建一個 java項目(java project)或 web項目(Dynamic web project

策略部署SCCM客戶

fff 服務 技術 讀取 win7 set type 獲取 添加 SCCM有多種客戶端部署方式,例如通過控制臺配置自動發現部署,組策略部署,手動部署,腳本部署等,今天介紹的是如何通過組策略部署客戶端 首先我們打開組策略控制臺新建一個組策略,命名為KSLX_SCCMAgent

Oracle數據庫之體系結構詳解,基本操作管理客戶遠程連接

plus down 緩沖區 擴展名 應用 提交 normal 系統 等待 上一篇文章《Oracle Database 12c安裝》講解了如何安裝oracle數據庫,這篇文章繼續講解數據庫的體系結構,基本操作管理及客戶端遠程連接Oracle的體系結構 Oracle數據庫由兩部

SoftEther centos 服務器搭建 客戶連接

遠程主機 運行 添加 password art 分享圖片 dbd nload word 開始安裝 1 安裝部署 服務端 cd /usr/local/ 打開要安裝的路徑,可以自定義 # wget https://github.com/SoftEther×××/S

30、mysql初始化客戶工具的使用

mysql監聽的埠: 3306/tcp 檢視埠 ss -tnl 檢視命令歷史 ~/.mysql_history Mysql初始化:提供配置檔案(/etc/mysql/my.cnf  /etc/my.cnf  ~/.my.cnf) 集中式的配置:多個應用程式共用的配置檔案

實現socket的服務和客戶通訊

對學習過程中自己敲的一些關於socket有關的程式碼做了個簡單總結,在這分享一下,給有需要的同學借鑑一下。 什麼是socket? 網路上的兩個程式通過一個雙向的通訊連線實現資料的交換,這個連線的一端稱為一個socket。 建立網路通訊連線至少要一對埠號(socket)。socke

Zookeeper分散式客戶Curator的API簡單使用

最近公司專案中使用了分散式Zookeeper及Dubbo,為了弄清楚這些框架在專案中的使用,在我業餘時間中學習了一些Zookeeper的簡單用法,分享出來,若有不足之處,望大家給與建議...... 一、什麼是分散式系統? 我的理解:將原有的系統拆分為多個子系統組成一個龐大的系統,這個龐大