intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình mạng nâng cao - Xử lý sự kiện (Event)

Chia sẻ: Đinh Trường Gấu | Ngày: | Loại File: PPT | Số trang:47

119
lượt xem
10
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Nhằm giúp các bạn có thêm tài liệu phục vụ nhu cầu học tập và nghiên cứu về Công nghệ thông tin, mời các bạn cùng tham khảo nội dung bài giảng "Lập trình mạng nâng cao - Xử lý sự kiện (Event)" dưới đây. Nội dung bài giảng cung cấp cho các bạn những kiến thức về mô hình xử lý sự kiện trong Windows, sử dụng Thread trong ứng dụng mạng, Socket không đồng bộ.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình mạng nâng cao - Xử lý sự kiện (Event)

  1. LẬP TRÌNH MẠNG NÂNG CAO XỬ LÝ SỰ KIỆN (EVENT) Nguyễn Vũ – IT Faculty, Viet Han Friendship 1
  2. 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
  3. 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
  4. 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
  5. THREAD Nguyễn Vũ – IT Faculty, Viet Han Friendship 5
  6. 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
  7. 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
  8. 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
  9. 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
  10. Sử dụng Thread trong chương trình .Net  Ví dụ: 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 newCounter2 = new Thread.Sleep(3000); Thread(new ThreadStart(Counter2)); } newCounter1.Start(); } newCounter2.Start(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 10
  11. 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 Server Bind Socket Listen on Socket While { Accept connect Client Create Thread Send Wellcome } While { Receive data Send data } Close socket Nguyễn Vũ – IT Faculty, Viet Han Friendship 11
  12. 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
  13. Sử dụng Thread để gửi nhận dữ liệu Nguyễn Vũ – IT Faculty, Viet Han Friendship 13
  14. LẬP TRÌNH MẠNG NÂNG CAO SOCKET KHÔNG ĐỒNG BỘ Nguyễn Vũ – IT Faculty, Viet Han Friendship 14
  15. 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
  16. 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
  17. 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
  18. 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  EndReceiveFrom()  remote host 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
  19. 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
  20. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
5=>2