Đăng ký Đăng nhập

Tài liệu Bài giảng java chương 7

.PDF
34
450
71

Mô tả:

bài giảng java_chương 7
LẬP TRÌNH JAVA NC Chương 07: LẬP TRÌNH CLIENT/SERVER Lê Tân Bộ môn: Lập trình máy tính Nội dung của chương 07  Giao tiếp trên Internet  Dịch vụ Server và khái niệm cổng  Giao tiếp Client/Server và Socket  Các  Sử lớp cần thiết của gói thư viện java.net dụng TCP Socket  Xây dựng chương trình ở Client  Xây dựng chương trình ở Server Tầng ứng dụng Mục đích:  Định nghĩa, sự hoạt động của các giao thức trong tầng ứng dụng. – Kiểu khách - người phục vụ (clientserver) – Những mô hình phục vụ – Tìm hiểu về các giao thức trên tầng ứng dụng thông qua các ví dụ cụ thể. Nâng cao  Các giao thức đặc biệt: – HTTP – ftp – SMTP – pop – dns  Lập trình các ứng dụng mạng socket API Trình ứng dụng và giao thức tầng ứng dụng Trình ứng dụng : truyền thông, các tiến trình phân tán – Chạy trên các host(“user space”) – Trao đổi thông điệp. – e.g., email, ftp, Web application transport network data link physical Giao thức tầng ứng dụng – Là một phần của trình ứng dụng. – Xác đình thông điệp trao đổi giữa các ứng dụng. – Sử dụng các dịch vụ truyền thông cung cấp bởi các giao thức tầng dưới (TCP, UDP) application transport network data link physical application transport network data link physical Một số thuật ngữ trình ứng dụng mạng Tiến trình : là chương trình chạy trên host.  Trong cùng một host, hai tiến trình có thể truyền thông với nhau qua interprocess communication (điều khiển bởi hệ điều hành).  Các tiến trình chạy trên các host khác nhau truyền thông qua giao thức tầng ứng dụng.  user agent: là phần mềm xử lý giao diện giữa người dùng và mạng. – Thực hiện theo các giao thức tầng ứng dụng. – Web: browser – E-mail: mail reader – streaming audio/video: media player Mô hình Client-Server Đặc trưng cho ứng dụng gồm hai thành phần : client và server Client:  Khởi tạo giao tiếp với server (“speaks first”)  Yêu cầu dịch vụ từ server.  Web : client nhận và hiển thị web page ; e-mail: các trình đọc thư. Server:  Cung cấp những dịch vụ được yêu cầu từ Client  e.g., Web server gửi Web page, Mail server phân phát e-mail application transport network data link physical request reply application transport network data link physical Giao thức tầng ứng dụng Q: Phân biệt các tiến trình API: application bằng cách nào? programming interface – Địa chỉ IP của host.  Định ra giao diện giữa tầng ứng dụng và tầng – “Số hiệu cổng”: cho mạng. phép bên host nhận phân biết các tiến  Socket : Internet API trình cục bộ. – Hai tiến trình truyền thông bằng cách Dịch vụ Cổng FPT 21 gửi/đọc dữ liệu HTTP 80 vào/từ socket. Telnet Finger SMTP 23 79 25 Các dịch vụ tầng giao vận cung cấp cho ứng dụng? Mất mát dữ liệu(Data loss)  Một số ứng dụng(e.g., audio) có thể chấp nhận một số mất mát.  Một số ứng dụng lại đòi hỏi (e.g., file transfer, telnet) 100% dữ liệu truyền tin cậy. Thời gian(Timing)  Một số ứng dụng (e.g.,hội thoại qua Internet,các trò chơi hành động) đòi hỏi độ trễ thấp. Băng thông(Bandwidth)  Một số ứng dụng(e.g., multimedia) yêu cầu băng thông tối thiểu để có thể truyền thông hiệu quả.  Một số ứng dụng khác (“elastic apps”) lại có thể sử dụng bất cứ băng thông nào mà chúng nhận được. Các yêu cầu cho một số ứng dụng Data loss Bandwidth Time Sensitive file transfer e-mail Web documents real-time audio/video no loss no loss loss-tolerant loss-tolerant no no no yes, 100’s msec stored audio/video interactive games financial apps loss-tolerant loss-tolerant no loss elastic elastic elastic audio: 5Kb-1Mb video:10Kb-5Mb same as above few Kbps up elastic Application yes, few secs yes, 100’s msec yes and no Dịch vụ của các giao thức giao vận trên Internet Dịch vụ TCP:  Hướng kết nối : Yêu cầu thiết lập kết nối giữa client và server.  Truyền dữ liệu tin cậy giữa tiến trình gửi và nhận  Điều tiết luồng : bên gửi sẽ không làm “lụt” bên nhận.  Điều tiết tắc nghẽn: điều chỉnh tốc độ gửi khi mạng quá tải.  Không hỗ trợ : thời gian, băng thông tối thiểu. Dịch vụ UDP:  Truyền dữ liệu không tin cậy giữa các tiến trình gửi và nhận.  Không hỗ trợ : thiết lập kết nối, độ tin cậy, điều tiết luồng, điều tiết tắc nghẽn,thời gian,băng thông tối thiểu. Q: Tại sao một số ứng dụng dùng UDP? Các ứng dụng trên Internet và giao thức giao vận tương ứng Application e-mail remote terminal access Web file transfer streaming multimedia remote file server Internet telephony Application layer protocol Underlying transport protocol SMTP [RFC 821] telnet [RFC 854] HTTP [RFC 2068] ftp [RFC 959] proprietary (e.g. RealNetworks) NSF proprietary (e.g., Vocaltec) TCP TCP TCP TCP TCP or UDP TCP or UDP typically UDP Lập trình Socket Mục đích : Nghiên cứu cách để xây dựng một ứng dụng client/server application mà giao tiếp bằng socket. Socket API  introduced in BSD4.1 UNIX, Tạo, sử dụng và huỷ bởi ứng dụng.  Sử dụng cho mô high client/server  Hai kiểu dịch vụ tần ứng dụng sử dụng socket API: – Truyền datagram không tin cậy – Tin cậy, hướng kết nối theo byte. socket a host-local, applicationcreated/owned, OS-controlled interface (a “door”) into which application process can both send and receive messages to/from another (remote or local) application process Lập trình Socket TCP Socket: Là “cánh cửa” giữa tiến trình tầng ứng dụng và giao thức giao vận end-end (UCP/TCP) TCP: là dịch vụ truyền tin cậy theo bytes từ tiến trình này đến tiến trình khác. Người phát triển điều khiển Điều khiển bởi hệ điều hành process process socket TCP with buffers, variables host or server internet socket TCP with buffers, variables host or server Người phát triển điều khiển Điều khiển bởi hệ điều hành Lập trình Socket TCP Client phải giao tiếp với server  Tiến trình trên server phải đang chạy.  server phải tạo sẵn socket (door) để tiếp nhận yêu cầu của client. Client giao tiếp với server bắng cách:  Tạo client-local TCP socket  Xác định địa chỉ IP,số hiệu cổng của tiến trình trên server.   Khi client tạo socket: client TCP thiết lập kết nối tới server TCP. Khi nhận được giao tiếp từ client,server TCP tạo socket mới cho tiến trình trên server truyền thông với client – Cho phép server có thể đáp ứng yêu cầu của nhiều client. Trên quan điểm ứng dụng TCP cung cấp dịch vụ truyền dữ liệu tin cậy theo bytes (kiểu đường ống) giữa Client và server Lớp InetAddress  Quản lý địa chỉ theo tên và số IP. – static InetAddress getLocalHost(): trả về địa chỉ máy cục bộ – static InetAddress getByName(String host): nhận địa chỉ máy kiểu chuỗi, trả về đối tượng InetAddress thay mặt cho địa chỉ máy này. – public String getHostName(): trả về tên của đối tượng InetAddress theo dạng String. – public byte[] getAddress(): trả về địa chỉ IP của đối tượng InetAddress theo dạng mảng các byte. – public String getHostAddress(): trả về địa chỉ IP của đối tượng InetAddress theo dạng String. Ví dụ: Chương trình lấy thông tin địa chỉ máy chủ import java.net.*; public class AddrLookupApp { public static void main(String[] args) { try { if (args.length!=1) { System.out.println("Usage: Java AddrLookupApp "); return;} InetAddress host = InetAddress.getByName(args[0]); String hostName = host.getHostName(); System.out.println("Host name:" + hostName); System.out.println("IP Address:" + host.getHostAddress()); } catch (UnknownHostException e) { System.out.print("Address not found"); return;} } } Lớp Socket  Tạo kết nối từ máy khách tới máy chủ. – public Socket(String host, int port): tạo một kết nối theo địa chỉ host và số cổng port. – public Socket(InetAddress address, int port): tạo một kết nối theo địa chỉ là đối tượng InetAddress và số cổng port. – public Socket(String host, int port, boolean stream): tạo một kết nối theo địa chỉ host và số cổng port, stream = true để quy định kết nối theo TCP, ngược lại, kết nối theo UDP (User Datagram Protocol). Các phương thức hỗ trợ của lớp Socket – InputStream getInputStream(): Lấy về luồng nhập để nhận dữ liệu. – OutputStream getOutputStream(): Lấy về luồng xuất để gửi dữ liệu. – int getPort(): Lấy về số hiệu cổng kết nối của máy chủ. – synchronized void close(): Cắt đứt kết nối với máy chủ. Lớp ServerSocket  Tạo kết nối từ máy chủ tới máy khách. – public ServerSocket(int port): tạo một đối tượng lắng nghe những kết nối từ máy khách theo số cổng port. – Socket accept(): dừng lại chờ cho đến khi nhận được kết nối và trả về đối tượng Socket của máy khách. – synchronized void close(): Cắt đứt kết nối với máy khách. Lập trình Socket TCP output stream: sequence of bytes out of process output stream monitor Input stream: sequence of bytes into process inFromServer Client Process process input stream inFromUser keyboard outToServer Ví dụ một ứng dụng client-server:  Client đọc một dòng kí tự từ input chuẩn (inFromUser stream) , gửi tới server qua socket (outToServer stream)  server đọc dòng kí tự trong sockets  server biến đổi dòng kí tự đó thành dòng kí tự chỉ gồm các chữ hoa và gửi trả về cho client.  client đọc,in ra dòng kí tự đã biến đổi từ socket (inFromServer stream) input stream client TCP clientSocket socket to network TCP socket from network
- Xem thêm -

Tài liệu liên quan