Bài giảng Lập trình mạng nâng cao - Xử lý sự kiện (Event)
lượt xem 10
download
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ộ.
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 - Xử lý sự kiện (Event)
- 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 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
- 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
- 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 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
- 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
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 | 161 | 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 - Chương 3: IP Multicasting
21 p | 95 | 11
-
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 | 93 | 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 | 19 | 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 | 34 | 4
-
Bài giảng Lập trình nâng cao: Bài 1 - Trương Xuân Nam
18 p | 24 | 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 | 95 | 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