1. Trang chủ
  2. » Giáo án - Bài giảng

Slide LẬP TRÌNH JAVA - LẬP TRÌNH CLIENT/SERVER

34 959 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 1,1 MB

Nội dung

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 lớp cần thiết của gói thư viện java.net  Sử 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ụ (client- server) – 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 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 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 application transport network data link physical application transport network data link physical 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 request reply Giao thức tầng ứng dụng API: application programming interface  Định ra giao diện giữa tầng ứng dụng và tầng mạng.  Socket : Internet API – Hai tiến trình truyền thông bằng cách gửi/đọc dữ liệu vào/từ socket. Q: Phân biệt các tiến trình bằng cách nào? – Địa chỉ IP của host. – “Số hiệu cổng”: cho phép bên host nhận phân biết các tiến trình cục bộ. Dịch vụ Cổng FPT 21 HTTP 80 Telnet 23 Finger 79 SMTP 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 Application file transfer e-mail Web documents real-time audio/video stored audio/video interactive games financial apps Data loss no loss no loss loss-tolerant loss-tolerant loss-tolerant loss-tolerant no loss Bandwidth elastic elastic elastic audio: 5Kb-1Mb video:10Kb-5Mb same as above few Kbps up elastic Time Sensitive no no no yes, 100’s msec 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? [...]... đợi datagram khác đến Lập trình Socket: tham khảo C-language tutorial (audio/slides): “Unix Network Programming” (J Kurose), HTTP://manic.cs.umass.edu/~amldemo/courseware/intro Java- tutorials: “All About Sockets” (Sun tutorial), HTTP://www.javaworld.com/javaworld/jw-1 2-1 996/jw12-sockets.html “Socket Programming in Java: a tutorial,” HTTP://www.javaworld.com/javaworld/jw-1 2-1 996/jw12-sockets.html CHÚC... đ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... 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... 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... – 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 =... 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 Client Process process output stream: sequence of bytes out of process output stream monitor Input stream: sequence of bytes into process inFromServer 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... close connectionSocket setup create socket, connect to hostid, port=x clientSocket = Socket() send request using clientSocket read reply from clientSocket close clientSocket Ví dụ về Java Server (TCP) import java. io.*; import java. net.*; class TCPClient { public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence; Tạo input stream Tạo client socket, kết nối tới server... server outToServer.writeBytes(sentence + '\n'); modifiedSentence = inFromServer.readLine(); System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } } Ví dụ về Java Server (TCP) import java. io.*; import java. net.*; class TCPServer { Tạo sẵn Socket ở cổng 6789 Đợi đến khi có socket từ client gửi đến Tạo input stream, đính kèm vào socket public static void main(String argv[]) throws... clientSentence.toUpperCase() + '\n'; Ghi dòng kí tự đã biến đổi vào socket outToClient.writeBytes(capitalizedSentence); } } } Kết thúc vòng lặp while, quay trở về vòng lặp cha, đợi kết nối khác Lập trình Socket UDP UDP: không thiết lập kết nối giữa client và server Không “bắt tay” Bên gửi phải xác định chính xác địa chỉ IP và cổng của bên nhận Trên quan điểm ứng dụng Server xác định địa chỉ IP và UDP cung cấp dịch... “byte stream”) UDP packet receivePacket packet (TCP sent “byte stream”) sendPacket Output: sends client UDP clientSocket socket to network from network UDP packet UDP socket Ví dụ về Java client (UDP) import java. io.*; import java. net.*; class UDPClient { public static void main(String args[]) throws Exception { Tạo input stream Tạo client socket Chuyển hostname thành địa chỉ IP sử dụng DNS BufferedReader . 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. 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. 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

Ngày đăng: 16/04/2014, 14:21

TỪ KHÓA LIÊN QUAN

w