Tài liệu Chương 5 LẬP TRÌNH MẠNG VỚI Java pdf

32 894 10
Tài liệu Chương 5 LẬP TRÌNH MẠNG VỚI Java pdf

Đ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

Chương 5 1 LẬP TRÌNH MẠNG VỚI Java (Gói thư viện Java.net) Nội dung  Giới thiệu gói thư viện Java.net  Sử dụng TCP socket  Sử dụng UDP socket 2  RMI và kỹ thuật phân tán đối tượng Giới thiệu gói thư viện Java.net  Một số lớp cần thiết trong gói thư viện java.net:  InetAddress: quản lý địa chỉ Internet  Socket: tạo kết nối từ client đến server  ServerSocket: tạo kết nối từ phía server đến 3  ServerSocket: tạo kết nối từ phía server đến client  DatagramSocket: gửi nhận dữ liệu dưới dạng gói tin  DatagramPackage: gói tin chứa dữ liệu gửi nhận sử dụng cho lớp DatagramSocket  URL: địa chỉ định vị tài nguyên trên mạng Lớp InetAddress  Sử dụng để quản lý địa chỉ host theo tên hay số  Các phương thức thường được sử dụng: • static InetAddress getLocalHost() : trả về đối tượng InetAddress là địa chỉ của máy cục bộ(localhost). • static InetAddress getByName(String hostName): trả về đối tượng InetAddress là địa chỉ của máy có tên là 4 trả về đối tượng InetAddress là địa chỉ của máy có tên là hostName. • static InetAddress[] getAllByName(String hostName) : trả về tất cả các đối tượng InetAddress là địa chỉ của máy có tên là hostName. • byte[] getAddress(): trả về địa chỉ IP của đối tượng InetAddress dưới dạng chuỗi byte. • string getHostAddress(): trả về địa chỉ IP của đối tượng InetAddress dưới dạng string. Lớp InetAddress(tt)-Ví dụ try{ //Lấy đối tượng InetAddress chứa thông tin về máy chủ InetAddress host= InetAddress.getByName(“www.hcmutrans.edu.vn”); 5 Sytem.out.println(“Host Name :”+host.getHostName()); Sytem.out.println(“IP Address:”+host.getHostAddress()); } catch( UnknownHostException e){ System.out.println(“Address not found!”); } Lớp Socket  Sử dụng cho client kết nối đến server  Các hàm tạo • Socket(String hostName,int port): tạo đối tượng socket và kết nối đến server hostName ở số hiệu cổng port. 6 • Socket(InetAddress address,int port): tạo đối tượng socket kết nối đến address và port. • Socket(String hostName, int port, boolean stream): tạo đối tượng socket kết nối đến hostName và port, stream=true nếu qui định kết nối theo TCP, stream=false nếu qui định kết nối theo UDP. Tuy nhiên nếu sử dụng socket theo UDP thì nên sử dụng lớp DatagramSocket. Lớp Socket(tt)  Các phương thức thường được sử dụng: • InputStream getInputStream() : lấy luồng nhập để có thể nhận dữ liệu từ máy ở xa. • OutputStream getOutputStream(): lấy luồng xuất để có thể gửi dữ liệu đến máy ở xa. 7 xuất để có thể gửi dữ liệu đến máy ở xa. • InetAddress getInetAddress(): trả về đối tượng InetAddress chứa địa chỉ của máy đang kết nối đến. • int getPort(): trả về số hiệu cổng sử dụng của máy đang kết nối. • void close(): đóng socket, cắt kết nối. Lớp Socket(tt)-Ví dụ try{ //Kết nối đến máy chủ Socket mySocket=new Socket(“www.hcmutrans.edu.vn”,8080); //Luồng nhâp để nhận dữ liệu DataInputStream inStream=new DataInputStream(mySocket.getInputStream()); //Luồng xuất để gửi dữ liệu DataOutputStream outStream=new DataOutputStream(mySocket.getOutputStream()); 8 DataOutputStream outStream=new DataOutputStream(mySocket.getOutputStream()); //Bắt đầu gửi nhận dữ liệu qua inStream và outStream … } catch(Exception e){ System.out.println(e); } Lớp ServerSocket  Sử dụng cho server, tạo socket và lắng nghe kết nối trên một port  Hàm tạo và các phương thức: • ServerSocket(int port): tạo đối tượng socket và lắng 9 • ServerSocket(int port): tạo đối tượng socket và lắng nghe ở port. • Socket accept(): dừng lại và đợi client kết nối đến, khi nhận được thông tin kết nối sẽ trả về đối tượng Socket kết nối với client. • void close(): cắt kết nối và đóng socket. Lớp ServerSocket(tt)-Ví dụ try{ //Tạo serverSocket lắng nghe ở cổng 12345 ServerSocket server=new ServerSocket(12345); //Chờ client kết nối đến Socket client=server.accept(); 10 //Tạo InputStream và OutputStream qua socket client // và bắt đầu gửi nhận dữ liệu… } catch(Exception e){ System.out.println(e); } [...]... nối với cổng 23 45 DatagramSocket socket=new DatagramSocket(23 45) ; //Khai báo Buffer gửi nhận byte outBuffer[]; byte inBuffer[]=new byte[ 256 ]; //Khai báo Datagram Packet để gửi và nhận DatagramPacket outDatagram; DatagramPacket inDatagram=new DatagramPacket(inBuffer,inBuffer.length); //Bắt đầu gửi nhận dữ liệu … // nhận dữ liệu: socket.receive(inDatagram); // … xử lý dữ liệu ở inBuffer // chuẩn bị dữ liệu. .. thành các file class, tạo Stub & Skeleton C:\>javac Calculator .java C:\>javac CalculatorImpl .java C:\>rmic CalculatorImpl  Kết quả quá trình dịch được các file:     Calculator.class CalculatorImpl.class CalculatorImpl_Stub.class CalculatorImpl_Skel.class 27 B4 Xây dựng CalculatorServer .java để cài đặt đối tượng Calculator import java. rmi.server.*; import java. rmi.*; public class CalculatorServer{... và gửi dữ liệu đến server qua địa chỉ và cổng đã được biết trước Server gửi trả dữ liệu qua địa chỉ và cổng của client chứa trong gói tin này  Tham khảo ví dụ:  CurrencyServer/CurrencyClient: server phục vụ truy vấn giá cả ngoại tệ 17 RMI và kỹ thuật lập trình phân tán đối tượng  Khái niệm lập trình phân tán đối tượng  Thiết kế ứng dụng phân tán RMI  Vấn đề truyền tham số  Kết nối mạng và vấn... Remote để có thể gọi được từ xa  File Calculator .java có nội dung như sau import java. rmi.*; public interface Calculator extends Remote{ public int sum(int n); // sum = 1+2+3+…+n } //Chỉ khai báo các phương thức và //đối số, không có nội dung 25 B2 Tạo lớp CalculatorImpl hiện thực interface Calculator  File CalculatorImpl .java có nội dung: import java. rmi.*; public class CalculatorImpl implements... lửa(firewall)  SOAP 18 Khái niệm lập trình phân tán đối tượng  Các đối tượng nằm phân tán trên các máy vật lý khác nhau  Đối tượng có thể triệu gọi phương thức của đối tượng nằm trên một máy khác – triệu gọi từ xa  RMI (Remote method Invoke): là cách thức giao tiếp của các đối tượng Java có mã lệnh cài đặt nằm trên các máy khác nhau có thể triệu gọi lẫn nhau 19 Khái niệm lập trình phân tán đối tượng(tt)... tạo gói tin có dữ liệu chứa trong buffer, chiều dài buffer là len DatagramPacket(byte buffer[], int len, InetAddress dest, int port): tạo gói tin gửi đến địa chỉ dest với số hiệu cổng port • • • • InetAddess getAddress(): lấy địa chỉ chứa trong gói tin int getPort(): lấy số hiệu cổng chứa trong gói tin byte[] getData(): lấy dữ liệu trong gói tin int getLength(): lấy chiều dài gói dữ liệu 12 Lớp DatagramSocket... System.out.println(e); } } } 28 B5 Thực thi bộ đăng ký đối tượng rmiregistry.exe  Chức năng của bộ đăng ký là đón nhận các kết nối chứa thông tin về đối tượng do phương thức Naming.bind() gửi đến  Kích hoạt bộ đăng ký: C:\jsdk\bin\rmiregistry.exe  Kích hoạt CalculatorServer: java CalculatorServer 29 B6 Xây dựng CalculatorClient .java sử dụng đối tượng Calculator import java. rmi.*; public class CalculatorClient{... // nhận dữ liệu: socket.receive(inDatagram); // … xử lý dữ liệu ở inBuffer // chuẩn bị dữ liệu trong outDatagram // gửi dữ liệu: socket.send(outDatagram); //…… } catch(Exception e){ System.out.println(e); } 13 Lớp URL  URL(Uniform Resource Locator): sử dụng để định vị tài nguyên mạng  Hàm tạo và các phương thức: • • URL(String s): tạo đối tượng URL từ địa chỉ s là một chuỗi Object getContent(): lấy... dữ liệu BufferReader inStream=new BufferReader(new InputStreamReader(url.openStream())); //In nội dung trang index.htm ra màn hình … String s; while ((s=inStream.readLine())!=null){ System.out.println(s); } } catch(Exception e){ System.out.println(e); } 15 Sử dụng TCP socket  Server: tạo một đối tượng ServerSocket lắng nghe đến một số hiệu cổng nào đó  Client: tạo một đối tượng Socket kết nối với. .. vùng nhớ nào đã cấp phát dành cho con trỏ này  Lời gọi phương thức cục bộ luôn trả về kết quả, trong khi gọi phương thức từ xa thông qua kết nối mạng và có thể bị ngắt ngang do mạng có sự cố 21 Lớp trung gian: Stub & Skeleton  Để giải quyết vấn đề trên, Java không cho phép gọi phương thức từ xa trực tiếp mà thông qua lớp trung gian  Lớp trung gian tồn tại ở cả máy gọi và máy được gọi  Máy gọi cần . Chương 5 1 LẬP TRÌNH MẠNG VỚI Java (Gói thư viện Java. net) Nội dung  Giới thiệu gói thư viện Java. net  Sử dụng TCP socket. gửi nhận dữ liệu … // nhận dữ liệu: socket.receive(inDatagram); // … xử lý dữ liệu ở inBuffer // chuẩn bị dữ liệu trong outDatagram // gửi dữ liệu: socket.send(outDatagram);

Ngày đăng: 24/12/2013, 18:15

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan