1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Lập Trình Mạng Nâng Cao - Xử Lý Sự Kiện (Event)

47 407 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 47
Dung lượng 1,13 MB

Nội dung

LẬP TRÌNH MẠNG NÂNG CAO XỬ LÝ SỰ KIỆN (EVENT) Nguyễn Vũ – IT Faculty, Viet Han Friendship 1 Mô hình xử lý sự kiện trong Windows  Được thể hiện như sau: Nguyễn Vũ – IT Faculty, Viet Han Friendship 2 Mô hình xử lý sự kiện trong Windows  Trong mô hình xử lý sự kiện, hai từ khoá hay được dùng đó là event và delegate.  Sự kiện Sender và Receiver trong windows được mô tả trong mô hình sau: Nguyễn Vũ – IT Faculty, Viet Han Friendship 3 Mô hình xử lý sự kiện trong Windows  Ví dụ: button1.Click += new EventHandler(Thongbao); private void button1_Click(object sender, EventArgs e) { int a = Convert.ToInt32(textBox1.Text); int b = Convert.ToInt32(textBox2.Text); c = a + b; textBox3.Text = c.ToString(); } private void Thongbao(object sender, EventArgs e) { MessageBox.Show("Tong cua hai so la:" + c.ToString()); } Nguyễn Vũ – IT Faculty, Viet Han Friendship 4 THREAD Nguyễn Vũ – IT Faculty, Viet Han Friendship 5 Sử dụng Thread trong ứng dụng mạng  Một số khái niệm:  Đa nhiệm (multitasking): là khả năng hệ điều hành làm nhiều công việc tại 1 thời điểm.  Tiến trình (process): HĐH cấp phát bộ nhớ và tài nguyên riêng biệt để chạy 1 ứng dụng nào đó.  Luồng (Thread): Trong hệ thống, một tiến trình có thể có 1 hoặc nhiều chuỗi thực hiện tách biệt nhau và có thể chạy đồng thời. Mỗi chuỗi thực hiện này gọi là 1 thread.  Nhờ luồng ta có thể thiết kế các Server đáp ứng các yêu cầu một cách đồng thời. Nguyễn Vũ – IT Faculty, Viet Han Friendship 6 Sử dụng Thread trong chương trình .Net  Để sử dụng Thread trong .Net ta sử dụng NameSpace System.Threading  Một số phương thức thường dùng: Tên phương thức Ý nghĩa Abort() Kết thúc Thread Join() Buộc chương trình phải chờ cho Thread kết thúc thì mới thực hiện tiếp các câu lệnh sau Join Resume() Tiếp tục chạy Thread đã bị tạm ngưng Sleep() Static method: tạm dừng thread trong một khoảng thời gian Start() Bắt đầu chạy Thread Suspend() Tạm ngưng Thread Nguyễn Vũ – IT Faculty, Viet Han Friendship 7 Sử dụng Thread trong chương trình .Net  Sau khi Thread bắt đầu, các phương thức: Abort(), Join(), Resume(), Sleep() mới có thể được thực hiện.  Một số thuộc tính thường dùng: Tên phương thức Ý nghĩa CurrentThread Đây là phương thức tĩnh. Trả vể Thread hiện hành đang chạy. IsAlive Trả về giá trị cho biết trạng thái thực thi của Thread hiện hành ThreadState Lấy về trạng thái của Thread (đang dừng hay chạy) Nguyễn Vũ – IT Faculty, Viet Han Friendship 8 Sử dụng Thread trong chương trình .Net  Tạo một luồng trong C#: { …… Thread newThread=new Thread(new ThreadStart(newMethod)); newThread.Start(); ……. } void newMethod() { ... } Nguyễn Vũ – IT Faculty, Viet Han Friendship 9 Sử dụng Thread trong chương trình .Net void Counter1() using System; { using System.Threading; int i; class ThreadSample for (i = 0; i < 10; i++) { { public static void Main() Console.WriteLine(" thread 1: {0}", i); { Thread.Sleep(2000); } ThreadSample ts = new } ThreadSample(); void Counter2() } { public ThreadSample() int i; { for (i = 0; i < 10; i++) int i; { Thread newCounter1 = new Console.WriteLine("thread 2: {0}", i); Thread(new ThreadStart(Counter1)); Thread.Sleep(3000); Thread newCounter2 = new } Thread(new ThreadStart(Counter2)); newCounter1.Start(); } newCounter2.Start(); } }  Ví dụ: Nguyễn Vũ – IT Faculty, Viet Han Friendship 10 Sử dụng Thread trong chương trình Server  Đa luồng hay được sử dụng trong các chương trình Server, tại 1 thời điểm Server chấp nhận nhiều kết nối đến Client  Mô hình ứng dụng đa luồng: Create Socket Bind Socket Listen on Socket While { Accept connect Create Thread } Server Client Send Wellcome While { Receive data Send data } Close socket Nguyễn Vũ – IT Faculty, Viet Han Friendship 11 Sử dụng Thread trong chương trình Server  Ví dụ: Chương trình Client-Server để trả về ngày, giờ của Server? Nguyễn Vũ – IT Faculty, Viet Han Friendship 12 Sử dụng Thread để gửi nhận dữ liệu Nguyễn Vũ – IT Faculty, Viet Han Friendship 13 LẬP TRÌNH MẠNG NÂNG CAO SOCKET KHÔNG ĐỒNG BỘ Nguyễn Vũ – IT Faculty, Viet Han Friendship 14 Socket không đồng bộ - ví dụ  Socket không đồng bộ tức là lời gọi hàm sẽ trở về ngay bất chấp dữ liệu gửi/nhận hoặc yêu cầu kết nối đã hoàn tất hay chưa.  Mô hình Client-Server cho phương thức không đồng bộ như sau: Nguyễn Vũ – IT Faculty, Viet Han Friendship 15 Socket không đồng bộ - ví dụ  Mô hình Client/Server cho phương thức không đồng bộ như sau: Nguyễn Vũ – IT Faculty, Viet Han Friendship 16 Socket không đồng bộ  Lớp AsyncCallback:  Lớp này cho phép các phương thức bắt đầu 1 hàm không đồng bộ và thay thế 1 phương thức uỷ quyền khi hàm không đồng bộ hoàn thành  Những phương thức Socket ko đồng bộ tách những hàm phổ biến của lập trình mạng thành 2 phần:  Phương thức Begin để bắt đầu 1 hàm và đăng ký với phương thức AsyncCallback  Phương thức End kết thúc 1 hàm khi phương thức AsyncCallback được gọi Nguyễn Vũ – IT Faculty, Viet Han Friendship 17 Socket không đồng bộ  Mỗi phương thức Begin có 1 phương thức End được kết hợp để hoàn thành 1 hàm, các phương thức được liệt kê trong bảng sau: Requests Started By… Description of Request Requests Ended BY… BeginAccept() To accept an incoming connection EndAccept() BeginConnect() To connect to a remote host EndConnect() BeginReceive() To retrieve data from a socket EndReceive() BeginReceiveFrom() To retrieve data from a specific remote host EndReceiveFrom() BeginSend() To send data from a socket EndSend() BeginSendTo() To send data to a specific remote host EndSendTo() Nguyễn Vũ – IT Faculty, Viet Han Friendship 18 Socket không đồng bộ  Để chấp nhận 1 kết nối đến từ 1 client ở xa, ta dùng phương thức BeginAccept(). Theo dạng như sau: IAsyncResult BeginAccept(AsyncCallback callback, object state)  Ví dụ: Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050); sock.Bind(iep); sock.Listen(5); sock.BeginAccept(new AsyncCallback(CallAccept), sock); Nguyễn Vũ – IT Faculty, Viet Han Friendship 19 Socket không đồng bộ  Sau khi phương thức BeginAccept() kết thúc và 1 kết nối xảy ra thì phương thức AsyncCallback được gọi  Phương thức AsyncCallback bao gồm phương thức EndAccept() để kết thúc việc chấp nhận 1 socket.  Đây là cú pháp của phương thức EndAccept(): Socket EndAccept(IAsyncResult iar);  Phương thức End thường được viết theo dạng sau: private static void CallAccept(IAsyncResult iar) { Socket server = (Socket)iar.AsyncState; Socket client = server.EndAccept(iar); . . . } Nguyễn Vũ – IT Faculty, Viet Han Friendship 20 Socket không đồng bộ  The BeginConnect() and EndConnect() Methods:  Dạng của BeginConnect(): IAsyncResult BeginConnect(EndPoint ep, AsyncCallback callback, Object state)  Ví dụ về BeginConnect(): Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9050); newsock.BeginConnect(iep, new AsyncCallback(Connected), newsock); Nguyễn Vũ – IT Faculty, Viet Han Friendship 21 Socket không đồng bộ  The BeginConnect() and EndConnect() Methods:  Dạng của EndConnect(): EndConnect(IAsyncResult iar)  Ví dụ về EndConnect(): public static void Connected(IAsyncResult iar){ Socket sock = (Socket)iar.AsyncState; try { sock.EndConnect(iar); } catch (SocketException) { Console.WriteLine("Unable to connect to host"); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 22 Socket không đồng bộ  The BeginSend() and EndSend() Methods:  Dạng của BeginSend(): IAsyncResult BeginSend(byte[] buffer, int offset, int size, SocketFlags sockflag, AsyncCallback callback, object state)  Ví dụ: sock.BeginSend(data,0, data.Length, SocketFlags.None, new AsyncCallback(SendData), sock);  Dạng của EndSend(): int EndSend(IAsyncResult iar)  Ví dụ: private static void SendData(IAsyncResult iar) { Socket server = (Socket)iar.AsyncState; int sent = server.EndSend(iar); } Nguyễn Vũ – IT Faculty, Viet Han Friendship 23 Socket không đồng bộ  The BeginSendTo() and EndSendTo() Methods  Dùng cho Socket không hướng kết nối  Dạng của BeginSendTo(): IAsyncResult BeginSendTo(byte[] buffer, int offset, int size, SocketFlags sockflag, EndPoint ep, AsyncCallback callback, object state)  Ví dụ: IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.1.6"), 9050); sock.BeginSendTo(data, 0, data.Length, SocketFlags.None, iep, new AsynCallback(SendDataTo), sock); Nguyễn Vũ – IT Faculty, Viet Han Friendship 24 Socket không đồng bộ  The BeginSendTo() and EndSendTo() Methods  Dạng của EndSendTo(): int EndSendTo(IAsyncResult iar)  The BeginReceive() and EndReceive() Methods:  Dạng của BeginReceive() IAsyncResult BeginReceive(byte[] buffer, int offset, int size, SocketFlags sockflag, AsyncCallback callback, object state)  Ví dụ: sock.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(ReceivedData), sock); Nguyễn Vũ – IT Faculty, Viet Han Friendship 25 Socket không đồng bộ  The BeginReceive() and EndReceive() Methods:  EndReceive(): void ReceivedData(IAsyncResult iar) { Socket remote = (Socket)iar.AsyncState; int recv = remote.EndReceive(iar); string receivedData = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine(stringData); } Nguyễn Vũ – IT Faculty, Viet Han Friendship 26 Socket không đồng bộ  The BeginReceiveFrom() and EndReceiveFrom() Methods:  Dùng cho Socket không hướng kết nối  Dạng của BeginReceiveFrom(): IAsyncResult BeginReceiveFrom(byte[] buffer, int offset, int size, SocketFlags sockflag, ref EndPoint ep, AsyncCallback callback, object state)  Ví dụ: sock.BeginReceive(data, 0, data.Length, SocketFlags.None, ref iep, new AsyncCallback(ReceiveData), sock); Nguyễn Vũ – IT Faculty, Viet Han Friendship 27 Socket không đồng bộ  The BeginReceiveFrom() and EndReceiveFrom() Methods:  EndReceiveFrom(): void ReceiveData(IasyncResult iar) { Socket remote = (Socket)iar.AsyncState; int recv = remote.EndReceiveFrom(iar); string stringData = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine(stringData); } Nguyễn Vũ – IT Faculty, Viet Han Friendship 28 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.255.255 Nguyễn Vũ – IT Faculty, Viet Han Friendship 29 Kỹ thuật IP Multicasting  Chương trình khai báo và gửi gói tin 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 30 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 31 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(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); sock.SendTo(data, iep1); sock.SendTo(data, iep2); sock.Close(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 32 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, recy); Console.WriteLine("received: {0} from: {1}",stringData, ep.ToString()); sock.Close(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 33 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 34 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 35 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 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 36 Kỹ thuật IP Multicasting  Một số địa chỉ Multicast: Nguyễn Vũ – IT Faculty, Viet Han Friendship 37 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 38 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 39 Kỹ thuật IP Multicasting  Gửi multicast Packets qua Router Nguyễn Vũ – IT Faculty, Viet Han Friendship 40 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 bỏ một socket khỏi nhóm Multicast  SetSocketOption(SocketOptionLevel,SocketOption Name, optionValue)  SocketOptionName: AddMembership DropMembership Nguyễn Vũ – IT Faculty, Viet Han Friendship 41 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 42 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 43 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 44 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 45 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 46 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 47 [...]... dụng Thread trong chương trình Server  Ví dụ: Chương trình Client-Server để trả về ngày, giờ của Server? Nguyễn Vũ – IT Faculty, Viet Han Friendship 12 Sử dụng Thread để gửi nhận dữ liệu Nguyễn Vũ – IT Faculty, Viet Han Friendship 13 LẬP TRÌNH MẠNG NÂNG CAO SOCKET KHÔNG ĐỒNG BỘ Nguyễn Vũ – IT Faculty, Viet Han Friendship 14 Socket không đồng bộ - ví dụ  Socket không đồng bộ tức là lời gọi hàm sẽ trở... chương trình Server  Đa luồng hay được sử dụng trong các chương trình Server, tại 1 thời điểm Server chấp nhận nhiều kết nối đến Client  Mô hình ứng dụng đa luồng: Create Socket Bind Socket Listen on Socket While { Accept connect Create Thread } Server Client Send Wellcome While { Receive data Send data } Close socket Nguyễn Vũ – IT Faculty, Viet Han Friendship 11 Sử dụng Thread trong chương trình. .. Lớp này cho phép các phương thức bắt đầu 1 hàm không đồng bộ và thay thế 1 phương thức uỷ quyền khi hàm không đồng bộ hoàn thành  Những phương thức Socket ko đồng bộ tách những hàm phổ biến của lập trình mạng thành 2 phần:  Phương thức Begin để bắt đầu 1 hàm và đăng ký với phương thức AsyncCallback  Phương thức End kết thúc 1 hàm khi phương thức AsyncCallback được gọi Nguyễn Vũ – IT Faculty, Viet... 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.255.255 Nguyễn Vũ – IT Faculty, Viet Han Friendship 29 Kỹ thuật IP Multicasting  Chương trình khai báo và gửi gói... 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 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... dụ  Socket không đồng bộ tức là lời gọi hàm sẽ trở về ngay bất chấp dữ liệu gửi/nhận hoặc yêu cầu kết nối đã hoàn tất hay chưa  Mô hình Client-Server cho phương thức không đồng bộ như sau: Nguyễn Vũ – IT Faculty, Viet Han Friendship 15 Socket không đồng bộ - ví dụ  Mô hình Client/Server cho phương thức không đồng bộ như sau: Nguyễn Vũ – IT Faculty, Viet Han Friendship 16 Socket không đồng bộ  Lớp... sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); Nguyễn Vũ – IT Faculty, Viet Han Friendship 31 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,... Console.WriteLine("received: {0} from: {1}",stringData, ep.ToString()); sock.Close(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 33 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... advert.Start(); Console.Write("Press Enter to stop"); string data = Console.ReadLine(); } Nguyễn Vũ – IT Faculty, Viet Han Friendship 34 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,... Encoding.ASCII.GetBytes("This is a test message"); sock.SendTo(data, iep); sock.Close(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 30 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); ... Nguyễn Vũ – IT Faculty, Viet Han Friendship 20 Socket không đồng  The BeginConnect() and EndConnect() Methods:  Dạng BeginConnect(): IAsyncResult BeginConnect(EndPoint ep, AsyncCallback callback,... SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("224 .10 0.0 .1" )); Nguyễn Vũ – IT Faculty, Viet Han Friendship 42 Socket Multicasting Net  Gửi liệu Multicast class MultiSend{ public static... AsyncCallback(Connected), newsock); Nguyễn Vũ – IT Faculty, Viet Han Friendship 21 Socket không đồng  The BeginConnect() and EndConnect() Methods:  Dạng EndConnect(): EndConnect(IAsyncResult

Ngày đăng: 23/10/2015, 19:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w