Lập trình mạng nâng cao - Chương 3: Ip multicasting

BroadCasting là gì?

Dùng để gửi một gói tin đến tất cả các nút trong mạng

Để thực hiện hình thức quảng bá, địa chỉ đến của gói tin sẽ là địa chỉ quảng bá.

Có hai loại là:

Local BroadCast

Global BroadCast

Ví dụ: Cho mạng lớp B có địa chỉ IP là 192.168.0.0 có SubNet Mask là 255.255.0.0, địa chỉ Local Broadcast là: 192.168.254.255

 

ppt21 trang | Chia sẻ: Mr Hưng | Lượt xem: 918 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Lập trình mạng nâng cao - Chương 3: Ip multicasting, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 3. IP MULTICASTINGLẬP TRÌNH MẠNG NÂNG CAO1Nguyễn VũKỹ thuật IP MulticastingBroadCasting là gì?Dùng để gửi một gói tin đến tất cả các nút trong mạngĐể thực hiện hình thức quảng bá, địa chỉ đến của gói tin sẽ là địa chỉ quảng bá.Có hai loại là:Local BroadCastGlobal BroadCastVí dụ: Cho mạng lớp B có địa chỉ IP là 192.168.0.0 có SubNet Mask là 255.255.0.0, địa chỉ Local Broadcast là: 192.168.254.2552Nguyễn VũKỹ thuật IP MulticastingTheo mặc định, Socket không được phép gửi tin nhắn quảng bá:Gửi gói dữ liệu BroadCast:class BadBroadcast { public static void Main() { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 9050); byte[] data = Encoding.ASCII.GetBytes("This is a test message");sock.SendTo(data, iep); sock.Close(); } } 3Nguyễn VũKỹ thuật IP MulticastingDùng kỹ thuật BroadCasting để gửi dữ liệu đến nhiều máy trong mạng cục bộĐối với một ứng dụng C # để gửi các gói dữ liệu Broadcast, ta dùng phương thức SetSocketOption() của lớp Socket :Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); 4Nguyễn VũKỹ thuật IP MulticastingDùng kỹ thuật BroadCasting để gửi dữ liệu đến nhiều máy trong mạng cục bộ Gửi gói dữ liệu:class Broadcst {public static void Main() {Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);IPEndPoint iep1 = new IPEndPoint(IPAddress.Broadcast, 9050);IPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("192.168.1.255"), 9050);string hostname = Dns.GetHostName();byte[] data = Encoding.ASCII.GetBytes(hostname);sock.SetSocketOption(SocketOptionLeyel.Socket, SocketOptionName.Broadcast, 1);sock.SendTo(data, iep1);sock.SendTo(data, iep2);sock.Close(); }}5Nguyễn VũKỹ thuật IP Multicasting Nhận gói dữ liệu: class RecvBroadcst { public static void Main() {Socket sock = new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp);IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050);sock.Bind(iep); EndPoint ep = (EndPoint)iep;Console.WriteLine("Ready to receiye"); byte[] data = new byte[1024];int recv = sock.ReceiveFrom(data, ref ep);string stringData = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine("received: {0} from: {1}", stringData, ep.ToString()); data = new byte[1024]; recv = sock.ReceiveFrom(data, ref ep);stringData = Encoding.ASCII.GetString(data, 0, recv);Console.WriteLine("received: {0} from: {1}",stringData, ep.ToString());sock.Close();}}6Nguyễn VũKỹ thuật IP MulticastingSử dụng Broadcast Packet để thông báo có sự hiện diện của Serverclass Advertise { public static void Main() { Advertise server = new Advertise(); } public Advertise() { Thread advert = new Thread(new ThreadStart(sendPackets)); advert.IsBackground = true; advert.Start(); Console.Write("Press Enter to stop"); string data = Console.ReadLine(); } 7Nguyễn VũKỹ thuật IP MulticastingSử dụng Broadcast Packet để thông báo có sự hiện diện của Servervoid sendPackets() { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 9050); string hostname = Dns.GetHostName(); byte[] data = Encoding.ASCII.GetBytes(hostname); while (true) { sock.SendTo(data, iep); Thread.Sleep(6000); } } 8Nguyễn VũKỹ thuật IP MulticastingMulticasting là gì?Một địa chỉ Multicasting cho phép thiết bị gửi dữ liệu tới một tập xác định trước các host, được biết đến như các nhóm Multicast, trong các mạng con khác nhau.RangeAssignment224.0.0.0–224.0.0.255Local network control block224.0.1.0–224.0.1.255Internetwork control block224.0.2.0–224.0.255.0AD-HOC block224.1.0.0–224.1.255.255ST multicast groups224.2.0.0–224.2.255.255SDP/SAP block224.252.0.0–224.255.255.255DIS transient block225.0.0.0–231.255.255.255Reserved232.0.0.0–232.255.255.255Source-specific multicast block233.0.0.0–233.255.255.255GLOP block234.0.0.0–238.255.255.255Reserved239.0.0.0–239.255.255.255Administratively scoped block9Nguyễn VũMột số địa chỉ Multicast:Kỹ thuật IP Multicasting10Nguyễn VũKỹ thuật IP MulticastingCó hai kỹ thuật Multicast được sử dụng:Peer to peer:11Nguyễn VũKỹ thuật IP MulticastingCó hai kỹ thuật Multicast được sử dụng:Central Server: 12Nguyễn VũKỹ thuật IP MulticastingGửi multicast Packets qua Router 13Nguyễn VũSocket Multicasting trong .NetSử dụng phương thức SocketOption():Phương thức SocketOption() dùng để:Thêm một socket vào nhóm MulticastLoại một socket khỏi nhóm MulticastSetSocketOption(SocketOptionLevel,SocketOptionName, optionValue) SocketOptionName:AddMembership DropMembership 14Nguyễn VũSocket Multicasting trong .NetSử dụng phương thức SocketOption():Ví dụ thêm một Socket vào nhóm Multicast 224.100.0.1 ta viết như sau:sock.SetSocketOption(SocketOptionLevel.IP,SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("224.100.0.1"));15Nguyễn VũSocket Multicasting trong .NetGửi dữ liệu Multicastclass MultiSend{public static void Main(){Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);IPEndPoint iep = new IPEndPoint(IPAddress.Parse("224.100.0.1"), 9050);byte[] data = Encoding.ASCII.GetBytes("This is a test message");server.SendTo(data, iep);server.Close();}}16Nguyễn VũSocket Multicasting trong .NetNhận dữ liệu Multicastclass MultiRecv{public static void Main() {Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);Console.WriteLine("Ready to receive");IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050); EndPoint ep = (EndPoint)iep;sock.Bind(iep);sock.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("224.100.0.1")));byte[] data = new byte[1024];int recv = sock.ReceiveFrom(data, ref ep);string stringData = Encoding.ASCII.GetString(data, 0, recv);Console.WriteLine("received: {0} from: {1}", stringData, ep.ToString());sock.Close();}}17Nguyễn VũSocket Multicasting trong .NetMulticast với lớp UdpClientJoinMulticastGroup()DropMulticastGroup()JoinMulticastGroup() là phương thức overloadJoinMulticastGroup(IPAddress)JoinMulticastGroup(IPAddress,int)18Nguyễn VũSocket Multicasting trong .NetUdpClient Multicast Receiver class UdpClientMultiRecv { public static void Main() { UdpClient sock = new UdpClient(9050); Console.WriteLine("Ready to receive");sock.JoinMulticastGroup(IPAddress.Parse("224.100.0.1"), 50);IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0); byte[] data = sock.Receive(ref iep); string stringData = Encoding.ASCII.GetString(data, 0, data.Length);Console.WriteLine("received: {0} from: {1}", stringData, iep.ToString()); sock.Close(); } } 19Nguyễn VũSocket Multicasting trong .NetUdpClient Multicast Sender class UdpClientMultiSend { public static void Main() { UdpClient sock = new UdpClient(); IPEndPoint iep = new IPEndPoint(IPAddress.Parse("224.100.0.1"), 9050);byte[] data = Encoding.ASCII.GetBytes("This is a test message"); sock.Send(data, data.Length, iep); sock.Close(); } } 20Nguyễn VũBài tập về nhà Xây dựng chương trình chat giữa một Server và nhiều Client sử dụng Socket Broadcast và Socket Multicast?21Nguyễn Vũ

Các file đính kèm theo tài liệu này:

  • pptbaigianglaptrinhmangnangcaonguyenvu_ip_multicasting_1041.ppt
Tài liệu liên quan