Bài giảng Lập trình mạng nâng cao - Chương 3: IP Multicasting
lượt xem 11
download
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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình mạng nâng cao - Chương 3: IP Multicasting
- LẬP TRÌNH MẠNG NÂNG CAO Chương 3. IP MULTICASTING Nguyễn Vũ – IT Faculty, Viet Han Friendship 1
- Kỹ thuật 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 Nguyễn Vũ – IT Faculty, Viet Han Friendship 2
- Kỹ thuật IP Multicasting Theo 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(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 3
- Kỹ thuật IP Multicasting Dù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); Nguyễn Vũ – IT Faculty, Viet Han Friendship 4
- Kỹ thuật IP Multicasting Dù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(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 5
- 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(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 6
- Kỹ thuật IP Multicasting Sử dụng Broadcast Packet để thông báo có sự hiện diện của 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 7
- Kỹ thuật IP Multicasting Sử dụng Broadcast Packet để thông báo có sự hiện diện của 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 8
- Kỹ thuật IP Multicasting Multicasting 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. 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 ADHOC 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 Sourcespecific 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 9
- Kỹ thuật IP Multicasting Một số địa chỉ Multicast: Nguyễn Vũ – IT Faculty, Viet Han Friendship 10
- Kỹ thuật IP Multicasting Có hai kỹ thuật Multicast được 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 được 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 trong .Net Sử dụng phương thức SocketOption(): Phương thức SocketOption() dùng để: Thêm một socket vào nhóm Multicast Loại một socket khỏi nhóm Multicast SetSocketOption(SocketOptionLevel,SocketOption Name, optionValue) SocketOptionName: AddMembership DropMembership Nguyễn Vũ – IT Faculty, Viet Han Friendship 14
- Socket Multicasting trong .Net Sử 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")); Nguyễn Vũ – IT Faculty, Viet Han Friendship 15
- Socket Multicasting trong .Net Gửi dữ 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 trong .Net Nhận dữ 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 trong .Net Multicast với lớp UdpClient JoinMulticastGroup() DropMulticastGroup() JoinMulticastGroup() là phương thức overload JoinMulticastGroup(IPAddress) JoinMulticastGroup(IPAddress,int) Nguyễn Vũ – IT Faculty, Viet Han Friendship 18
- Socket Multicasting trong .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 trong .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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình mạng nâng cao ICMP protocol - Nguyễn Vũ
29 p | 159 | 26
-
Bài giảng Lập trình C nâng cao: Chương 5 - Trần Minh Thái
22 p | 144 | 18
-
Bài giảng Lập trình mạng nâng cao: Giới thiệu - Nguyễn Xuân Vinh
8 p | 130 | 16
-
Bài giảng Lập trình C nâng cao: Chương 1 - Trần Minh Thái
25 p | 122 | 15
-
Bài giảng Lập trình mạng nâng cao - Xử lý sự kiện (Event)
47 p | 118 | 10
-
Bài giảng Lập trình mạng nâng cao - Nguyễn Vũ
18 p | 105 | 10
-
Bài giảng Lập trình mạng: Chương 3 - ThS. Trần Bá Nhiệm
96 p | 91 | 9
-
Bài giảng Lập trình mạng: Bài 4 - Bùi Trọng Tùng
20 p | 78 | 7
-
Bài giảng Lập trình mạng: Lập trình socket nâng cao: Tùy biến socket - TS. Nguyễn Hoài Sơn
48 p | 94 | 7
-
Bài giảng Lập trình web nâng cao: Chương 3 - Trường ĐH Văn Hiến
26 p | 17 | 5
-
Bài giảng Lập trình mạng: Lập trình UDP socket nâng cao - TS. Nguyễn Hoài Sơn
28 p | 106 | 5
-
Bài giảng Lập trình nâng cao - Chương 3: Mảng
48 p | 66 | 5
-
Bài giảng Lập trình nâng cao: Bài 4+5+6 - Trương Xuân Nam
25 p | 33 | 4
-
Bài giảng Lập trình nâng cao: Bài 1 - Trương Xuân Nam
18 p | 23 | 3
-
Bài giảng Lập trình mạng Java: Chương 0 - ThS. Nguyễn Minh Thành
8 p | 71 | 3
-
Bài giảng Lập trình mạng: Giới thiệu môn học - TS. Nguyễn Hoài Sơn
13 p | 94 | 2
-
Bài giảng Lập trình nâng cao (Advanced Programming) - Chương 5. Kiểu mảng và xâu ký tự
16 p | 2 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn