Nội dung Bài giảng Lập trình mạng nâng cao - Chương 3: IP Multicasting trình bày những nội dung về kỹ thuật IP Multicasting, Socket Multicasting trong .Net và một số bài tập. Mời các bạn tham khảo.
LẬP TRÌNH MẠNG NÂNG CAO Chương IP MULTICASTING Nguyễn Vũ – IT Faculty, Viet Han Friendship Kỹ thuật IP Multicasting BroadCasting gì? Dùng để gửi gói tin đến tất nút mạng Để thực hình thức quảng bá, địa đến gói tin địa quảng bá Có hai loại là: Local BroadCast Global BroadCast Ví dụ: Cho mạng lớp B có địa IP 192.168.0.0 có SubNet Mask 255.255.0.0, địa Local Broadcast là: 192.168.254.255 Nguyễn Vũ – IT Faculty, Viet Han Friendship Kỹ thuật IP Multicasting Theo mặc định, Socket không phép gửi tin nhắn quảng bá: Gửi gói 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(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship Kỹ thuật IP Multicasting Dùng kỹ thuật BroadCasting để gửi liệu đến nhiều máy mạng cục Đối với ứng dụng C # để gửi gói liệu Broadcast, ta dùng phương thức SetSocketOption() lớp Socket : Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); Nguyễn Vũ – IT Faculty, Viet Han Friendship Kỹ thuật IP Multicasting Dùng kỹ thuật BroadCasting để gửi liệu đến nhiều máy mạng cục Gửi gói 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(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship Kỹ thuật IP Multicasting Nhận gói 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(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship Kỹ thuật IP Multicasting Sử dụng Broadcast Packet để thông báo có diện Server class 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(); } Nguyễn Vũ – IT Faculty, Viet Han Friendship Kỹ thuật IP Multicasting Sử dụng Broadcast Packet để thơng báo có diện Server void 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); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship Kỹ thuật IP Multicasting Multicasting gì? Một địa Multicasting cho phép thiết bị gửi liệu tới tập xác định trước host, biết đến nhóm Multicast, mạng khác Range Assignment 224.0.0.0–224.0.0.255 Local network control block 224.0.1.0–224.0.1.255 Internetwork control block 224.0.2.0–224.0.255.0 AD-HOC block 224.1.0.0–224.1.255.255 ST multicast groups 224.2.0.0–224.2.255.255 SDP/SAP block 224.252.0.0–224.255.255.255 DIS transient block 225.0.0.0–231.255.255.255 Reserved 232.0.0.0–232.255.255.255 Source-specific multicast block 233.0.0.0–233.255.255.255 GLOP block 234.0.0.0–238.255.255.255 Reserved 239.0.0.0–239.255.255.255 Administratively scoped block Nguyễn Vũ – IT Faculty, Viet Han Friendship Kỹ thuật IP Multicasting Một số địa Multicast: Nguyễn Vũ – IT Faculty, Viet Han Friendship 10 Kỹ thuật IP Multicasting Có hai kỹ thuật Multicast sử dụng: Peer to peer: Nguyễn Vũ – IT Faculty, Viet Han Friendship 11 Kỹ thuật IP Multicasting Có hai kỹ thuật Multicast sử dụng: Central Server: Nguyễn Vũ – IT Faculty, Viet Han Friendship 12 Kỹ thuật IP Multicasting Gửi multicast Packets qua Router Nguyễn Vũ – IT Faculty, Viet Han Friendship 13 Socket Multicasting Net Sử dụng phương thức SocketOption(): Phương thức SocketOption() dùng để: Thêm socket vào nhóm Multicast Loại socket khỏi nhóm Multicast SetSocketOption(SocketOptionLevel,SocketOptionName, optionValue) SocketOptionName: AddMembership DropMembership Nguyễn Vũ – IT Faculty, Viet Han Friendship 14 Socket Multicasting Net Sử dụng phương thức SocketOption(): Ví dụ thêm Socket vào nhóm Multicast 224.100.0.1 ta viết sau: sock.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("224.100.0.1")); Nguyễn Vũ – IT Faculty, Viet Han Friendship 15 Socket Multicasting Net Gửi liệu Multicast class 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(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 16 Socket Multicasting Net Nhận liệu Multicast class 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(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 17 Socket Multicasting Net Multicast với lớp UdpClient JoinMulticastGroup() DropMulticastGroup() JoinMulticastGroup() phương thức overload JoinMulticastGroup(IPAddress) JoinMulticastGroup(IPAddress,int) Nguyễn Vũ – IT Faculty, Viet Han Friendship 18 Socket Multicasting Net UdpClient 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(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 19 Socket Multicasting Net UdpClient 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(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 20 Bài tập nhà Xây dựng chương trình chat Server nhiều Client sử dụng Socket Broadcast Socket Multicast? Nguyễn Vũ – IT Faculty, Viet Han Friendship 21 ... 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... Faculty, Viet Han Friendship Kỹ thuật IP Multicasting Multicasting gì? Một địa Multicasting cho phép thiết bị gửi liệu tới tập xác định trước host, biết đến nhóm Multicast, mạng khác Range Assignment... Nguyễn Vũ – IT Faculty, Viet Han Friendship Kỹ thuật IP Multicasting Một số địa Multicast: Nguyễn Vũ – IT Faculty, Viet Han Friendship 10 Kỹ thuật IP Multicasting Có hai kỹ thuật Multicast