TAILIEUCHUNG - Bài giảng Lập trình mạng: Bài 3 - Bùi Trọng Tùng (tiếp)

Bài giảng "Lập trình mạng - Bài 3: Các chế độ vào ra trên WinSock" cung cấp cho người học các kiến thức: Kỹ thuật vào ra theo sự kiện, kỹ thuật Overlapped, kỹ thuật vào ra trên Completion Port. nội dung chi tiết. | BÀI 3. CÁC CHẾ ĐỘ VÀO RA TRÊN WINSOCK(TIẾP) 1 Nội dung • Chế độ vào ra blocking và non-blocking • Kỹ thuật đa luồng • Kỹ thuật thăm dò • Kỹ thuật vào ra theo thông báo • Kỹ thuật vào ra theo sự kiện • Kỹ thuật Overlapped • Kỹ thuật vào ra trên Completion Port 2 1 5. KỸ THUẬT VÀO RA THEO SỰ KIỆN 3 Kỹ thuật vào ra theo sự kiện • Vào ra bất đồng bộ tương tự WSAAsyncSelect • Hàm WSAEventSelect() được sử dụng để gắn một bộ bắt sự kiện WSAEVENT với mỗi socket • Khi sự kiện xảy ra, đối tượng WSAEVENT chuyển từ trạng thái chưa báo hiệu(non-signaled) sang đã báo hiệu(signaled) • Tạo đối tượng WSAEVENT WSAEVENT WSACreateEvent(void); • Sau khi xử lý sự kiện, cần chuyển đối tượng WSAEVENT trở lại trạng thái chưa báo hiệu: BOOL WSAResetEvent(WSAEVENT hEvent); • Hủy đối tượng sự kiện BOOL WSACloseEvent(WSAEVENT hEvent); 4 2 Kỹ thuật vào ra theo sự kiện WSAEVENT object main thread run main thread wait for event handle event call winsock operation fail would block return nonsignaled winsock signals event signaled call succeeds main thread continue return winsock operation time 5 Hàm WSAEventSelect() • Gắn bộ bắt sự kiện vào socket: WSAEventSelect() • Chuyển socket sang chế độ vào ra không chặn dừng(non-blocking) • Trả về: • Thành công: 0 • Lỗi: SOCKET_ERROR int WSAEventSelect( SOCKET s, // [IN] Socket được theo dõi sự kiện WSAEVENT hEventObject, // [IN] Bộ bắt sự kiện // WSAEVENT gắn với socket long lEvent // [IN] Mặt nạ xác định các sự // kiện cần theo dõi ); 6 3 Hàm WSAWaitForMultipleEvents() • Đợi các sự kiện xảy ra trên các đối tượng WSAEVENT • Trả về khi có một bộ bắt sự kiện bất kỳ chuyển sang trạng thái báo hiệu hoặc có time-out, hoặc thủ tục xử lý vào ra thực thi DWORD WSAWaitForMultipleEvents( DWORD cEvents, // [IN] Số lượng bộ bắt sự kiện cần đợi const WSAEVENT FAR * lphEvents,// [IN] Các bộ bắt sự kiện BOOL fWaitAll, //[IN] Đợi tất cả các bộ bắt sự kiện? DWORD dwTimeout, //[IN] Thời gian chờ tối đa (ms) BOOL fAlertable //[IN] Thiết lập

TỪ KHÓA LIÊN QUAN
TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.