Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 34 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
34
Dung lượng
462,41 KB
Nội dung
Bài 4- Giảithuậtvà các kỹthuậtcơbảntrong lập trìnhClient Chủ đề Nắm được các bước (giải thuật) lậptrình chương trìnhClient Biết cách sử dụng các hàm Socket API trong lậptrình Client Thực hành lậptrình một chương trìnhClient đơn giản Nội dung 4.1) Cấu trúc tổng quát chương trìnhClient 4.2) Giảithuật tổng quát chương trìnhClient 4.3) Cách gọi hàm Socket API trong từng bước 4.1 Cấu trúc chương trìnhClient Về cơ bản, client không yêu cầu mức ưu tiên cao trong hệ thống Không yêu cầu nhiều tài nguyên và không cần hoạt động liên tục Cấu trúc chương trình gồm 3 module Module giao diện để tương tác với user Module kết nối với server Module thực thi giao thức trao đổi dữ liệu với server Gửi bản tin yêu cầu đến Server Nhận bản tin phản hồi từ Server và xử lý Các chức năng hỗ trợ thực thi giao thức Đọc và phân tích cú pháp bản tin giao thức Client/Server Xử lý dữ liệu trước khi gửi và sau khi nhận Thao tác với bộ đệm buffer chứa dữ liệu Hiển thị trạng thái phiên làm việc Thông báo và xử lý lỗi gặp phải Đọc/ghi dữ liệu từ tệp tin 4.2) Giảithuật chương trìnhclientcó 5 bước Một Client nói chung cần thực hiện 5 bước sau Bước 1) Xác định địa chỉ remote socket phía server Bước 2) Tạo local socket tại client Bước 3) Kết nối local socket với remote socket Bước 4) Gửi/nhận/xử lý dữ liệu qua kết nối socket Bước 5) Đóng kết nối Phân rã chức năng theo module Bước 1 -> 3 được thực hiện bởi module kết nối socket Bước 4 ->5 được thực hiện bởi module thực thi giao thức (module chính) Bước 1 3 là thao tác chung đối với mọi Client Bước 4và 5 tùy theo từng giao thức ứng dụng như HTTP, FTP, POP3 hay SMTP Ví dụ minh họa: Chương trình EchoClient Chức năng: kiểm tra phản hồi của server qua TCP/IP Các công đoạn xây dựng chương trình gồm: Các chức năng bổ trợ: truy vấn thông tin, thông báo lỗi Lậptrình module kết nối Lậptrình module tương tác với Server theo giao thức ứng dụng Echo Lập chương trình chính Giao thức ECHO Echo dùng để kiểm tra hoạt động của mạng và của server Client gửi đến Server 1 bản tin là một xâu kí tự bất kỳ Server gửi trả lại một bản tin với nội dung hoàn toàn trùng với bản tin mà client gửi đến Ví dụ: Client gửi bản tin ”HELLO” Server nhận được và gửi lại “HELLO” Client gửi “How are you?” Server gửi lại “How are you?” [...]...Cách thức hoạt động User chạy chương trình TCPEchoClient với tham số hàm main là tên server TCPEchoClient.exe Nếu kết nối thành công, nhập bản tin là xâu kí tự từ bàn phím và gửi bản tin đến server Nhận bản tin phản hồi và in ra màn hình Đóng kết nối và kết thúc nếu bản tin nhập vào là xâu rỗng Các tệp mã nguồn của project socketbasic.cpp: Module chức năng khởi tạo và giải. .. dữ liệu … Khi lậptrình mạng, cần chú ý kiểm tra kết quả gọi hàm SOCKET API để biết thao tác thực hiện có thành công hay không Nếu không kiểm tra mà vẫn tiếp tục các thao tác tiếp theo sẽ dẫn đến lỗi chương trình Bước 4: Client tương tác với Server Client gửi bản tin yêu cầu bằng cách Tạo nội dung bản tin và đưa bản tin vào vùng đệm buffer (bộ nhớ) Gọi hàm API send để gửi bản tin qua socket... đóng socket thì phía bên kia không nhận biết được sự kiện đó UDP thích hợp cho các ứng dụng cần tốc độ mà không cần tin cậy và liên kết chặt chẽ giữa Clientvà Server Bài tập: Chương trìnhClient với socket UDP Viết chương trình EchoUDPClient Sử dụng socket UDP Tương tác với server: gửi bản tin qua socket và nhận bản tin phản hồi ... lỗi chương trình khi gọi hàm recv nhiều lần Bước 5: Đóng kết nối Sau khi kết thúc gửi/nhận các bản, clientcó thể đóng kết nối Gọi hàm API closesocket closesocket(s) Bài tập Bài 1: Biết tên web server của ĐHXD là www.nuce.edu.vn, hãy viết một chương trình truy vấn địa chỉ IP của server trên Bài 2: Viết 1 chương trìnhClient kết nối đến cổng 80 của server www.nuce.edu.vn sau đó Gửi bản tin “GET... HTTP/1.1\r\n\r\n”, nhận phản hồi và in ra màn hình Gửi bản tin “GET /administrator HTTP/1.1\r\n”, nhận bản tin phản hồi và in ra màn hình Tiếp Bài 3: Tạo giao diện command line cho chương trình EchoTCPClient, sử dụng các chức năng qua lệnh: Kết nối đến server: lệnh connect, tham số là tên hoặc địa chỉ IP của server Gửi bản tin: lệnh msg, tham số là nội dung bản tin trên 1 dòng Đóng kết nối:... Ưu điểm: giúp chương trìnhclient linh hoạt hơn trong gửi/ nhận dữ liệu với nhiều Server Clientcó thể dùng một local socket để gửi dữ liệu cho nhiều remote socket Chú ý Khi gọi hàm connect() với UDP socket, hàm không báo lỗi nhưng không bảo đảm chắc chắn sẽ liên lạc được với server Cách truyền và nhận Khác với TCP, UDP socket truyền trọn vẹn một bản tin (datagram) trong một lần gọi hàm send... connect.cpp : chức năng kết nối đến server echoclient.cpp: chức năng trao đổi cácbản tin theo giao thức Echo Bước 1: Xác định địa chỉ socket phía Server Client Server transport network interface transport network interface Internet Xác định địa chỉ Socket của server ntn ? UDP TCP POP3 Địa chỉ Socket của tiến trình Server - Kiểu Socket (TCP hay UDP) - Cổng - Địa chỉ IP Địa chỉ của remote socket phía Server... lớn thì phía nhận cũng sẽ nhận trọn vẹn bản tin đó trong 1 lần gọi hàm recv hoặc recvfrom Chú ý : nếu kích thước vùng đệm < kích thước bản tin thi các byte dữ liệu còn lại sẽ bị bỏ qua (cách làm việc của UDP không tin cậy) Đóng socket Đóng socket UDP là giải phóng tài nguyên gán cho socket đó Do tính chất không liên kết của UDP, nếu một phía (ví dụ là Client) đóng socket thì phía bên kia không... Gửi bản tin: lệnh msg, tham số là nội dung bản tin trên 1 dòng Đóng kết nối: lệnh close Thoát khỏi chương trình: lệnh quit Đọc thêm: Client sử dụng UDP socket Một chương trìnhclient sử dụng UDP socket cũng bao gồm các bước tương tự Điểm khác biệt: không có liên kết giữa local socket và remote socket phía server vì UDP là giao thức không hướng kết nối Kết nối UDP socket Ý nghĩa của việc gọi... nhớ) Gọi hàm API send để gửi bản tin qua socket int byte_send = send(s, buffer, msg_length, 0); Client nhận bản tin phản hồi từ server Chuẩn bị vùng đệm buffer sẽ nhận nội dung bản tin Gọi hàm API recv để đọc dữ liệu từ socket vào buffer int byte_recv = recv(s, buffer, sizeof(buffer), 0); Hàm send và recv Nếu gửi dữ liệu thành công, hàm trả về số byte dữ liệu đã gửi Ngược lại, hàm trả về giá . Bài 4- Giải thuật và các kỹ thuật cơ bản trong lập trình Client Chủ đề Nắm được các bước (giải thuật) lập trình chương trình Client Biết cách sử dụng các hàm Socket API trong lập trình. trình Client Thực hành lập trình một chương trình Client đơn giản Nội dung 4. 1) Cấu trúc tổng quát chương trình Client 4. 2) Giải thuật tổng quát chương trình Client 4. 3) Cách. gọi hàm Socket API trong từng bước 4. 1 Cấu trúc chương trình Client Về cơ bản, client không yêu cầu mức ưu tiên cao trong hệ thống Không yêu cầu nhiều tài nguyên và không cần hoạt