1. Trang chủ
  2. » Công Nghệ Thông Tin

lập trình mạng với java

71 761 7
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Lập trình mạng với java
Người hướng dẫn GV. Bùi Tiến Trường
Trường học Không có thông tin
Chuyên ngành Lập trình mạng
Thể loại Ôn tập
Định dạng
Số trang 71
Dung lượng 397,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

tài liệu tham khảo lập trình mạng với java

Trang 2

Nội dung ôn tập

Ngôn ngữ Java căn bản

Lớp và đối tượng trong Java

Trang 3

Ngôn ngữ Java

 Java là ngôn ngữ lập trình hướng đối tượng

 Một chương trình Java thường bắt đầu bằng một khai

báo lớp (class); trong đó, có phương thức main – là

điểm bắt đầu thực thi của chương trình:

public static void main (String[] agrs)

 Java hỗ trợ các cấu trúc điều khiển:

Java cung cấp ba câu lệnh break,continue và

return cho phép chuyển điều khiển từ đoạn lệnh này

sang đoạn khác.

Trang 5

Chuyển đổi kiểu dữ liệu [1]

Trang 6

Chuyển đổi kiểu dữ liệu [2]

 Có hai cách chuyển đổi kiểu dữ liệu: tự động chuyển đổi kiểu dữ liệu và phép ép kiểu dữ liệu

 Khi dữ liệu ,với một kiểu dữ liệu cho trước, được gán cho một biến có kiểu dữ liệu khác, quá trình chuyển đổi kiểu dữ liệu tự động thực hiện nếu thõa các điều kiện sau:

 Hai kiểu dữ liệu tương thích nhau

 Kiểu dữ liệu đích lớn hơn kiểu dữ liệu nguồn

 Ép kiểu dữ liệu là sự chuyển đổi dữ liệu tường minh

Nó có thể làm mất thông tin

Trang 7

Các luật mở rộng kiểu dữ liệu

Tất cả các giá trị kiểu byte and short được mở

Nếu một toán hạng có kiểu double, kiểu dữ liệu

của toàn biểu thức sẽ được mở rộng thành kiểu

double

Trang 11

if (biểu_thức_điều_kiện) {

Trang 12

khối_lệnh_2; break;

default:

khối lệnh_n;

}

Trang 13

for (nhóm_lệnh_khởi_tạo;

bthức_điều_kiện;

nhóm_lệnh_tăng_giảm_giá_trị) {

khối_lệnh_lặp;

}

Trang 14

while

while (biểu_thức_điều_kiện) {

khối_lệnh_lặp;

}

Trang 15

do {

khối_lệnh_lặp; } while (condition);

Trang 16

Lớp và đối tượng

 Lớp định nghĩa một kiểu dữ liệu mới

 Đối tượng thuộc một lớp trong Java luôn được cấp

Trang 17

Phương thức

 Khai báo

access_specifier modifier kiểu_dữ_liệu

tên_phương_thức (danh_sách_tham_số) {

Trang 18

Phương thức [2]

 Nguyên tắc truyền tham số vào phương thức:

 Kiểu dữ liệu là kiểu cơ sở: truyền bằng tham số trị

 Kiếu dữ liệu là kiểu tham chiếu: truyền bằng tham

chiếu.

Phương thức trong lớp có thể overloading: nhiều

phương thức có cùng tên nhưng khác danh sách

tham số

Các phương thức overriding là các phương thức

giống nhau nhưng được khai báo trong các lớp khác nhau có quan hệ kế thừa

Trang 20

Phương thức khởi tạo

 Có cùng tên với tên lớp và không có kiểu trả về

 Được tự động gọi thực hiện ngay khi đối tượng thuộc lớp được tạo ra.

 Có hai loại phương thức khởi tạo: có tham số và không tham số (phương thức khởi tạo mặc định) Tùy thuộc vào cách khởi tạo đối tượng mà phương thức khởi tạo tương ứng được gọi thực hiện.

Trang 21

 Nếu trong phương thức khởi tạo của lớp dẫn xuất

không gọi (tường minh) phương thức khởi tạo của lớp cơ sở thì phương thức khởi tạo mặc định của lớp

cơ sở luôn được tự động gọi thực hiện

 Phạm vi truy cập của các phương thức trong lớp dẫn xuất phải bằng hoặc rộng hơn trong lớp cơ sở

Trang 24

Từ khóa super

Từ khóa super được sử dụng để gọi thực hiện

phương thức khởi tạo của lớp cơ sở

super(); // gọi constructor của lớp cơ sở

Từ khóa super có thể được sử dụng để tham chiếu

đến các thuộc tính hoặc gọi thực hiện các phương thức của lớp cơ sở

super.f( ); // gọi phương thức f() của lớp cơ sở

Trang 25

Từ khóa static [1]

 Có thể đặt trước một khai báo thuộc tính hay phương thức

static int i;

public static void f ( ) { }

Thuộc tính static là thuộc tính duy nhất được chia

sẻ bởi tất cả các đối tượng thuộc lớp

Phương thức static chỉ truy xuất được các thuộc tính static.

Các thành viên static có thể được truy xuất thông

qua tên lớp

System.out.println( … );

Trang 26

A obj1= new A();

A obj2= new A();

A obj3= new A();

A.p= 10; //Error

A.t=5;

}

obj1.p= 1; obj1.t= 2;

Trang 27

Tham chiếu [1]

 Tham chiếu, hình thành khi đối tượng được tạo ra, được sử dụng để truy xuất các thuộc tính của đối

tượng

 Khi gán một đối tượng vào một biến nhớ, hoặc

truyền đối tượng vào phương thức, chỉ có tham chiếu của đối tượng được truyền vào

Trang 28

 Để so sánh giá trị các đối tượng, sử dụng phương

thức equals() Như vậy, các lớp đối tượng cần cài đặt phương thức equals () để thực hiện so sánh

giá trị của hai đối tượng thuộc lớp

 Ví dụ

String str1= new String(“abc”);

String str2= new String(“abc”);

String str3= str1;

Trang 29

Wrapper Classes

Nằm trong gói java.lang

 Đóng gói các kiểu dữ liệu cơ sở dưới dạng các lớp

 Được sử dụng khi cần dùng một đối tượng biểu diễn một kiểu cơ sở

Các wrapper class dùng cho kiểu số: Double,

Float, Byte, Short, Integer và Long

Lớp Character là wrapper class dùng cho kiểu dữ liệu char.

Lớp Boolean là wrapper class dùng cho kiểu dữ liệu

boolean.

Trang 30

int length(): xác định chiều dài của một String.

int indexOf(String): tìm một chuỗi con trong

Trang 31

Lớp String [2]

String s1= “abc”;

int len= s1.length();// len = 3

int pos= s1.indexOf(“a”);// pos=0

pos= s1.indexOf(“g”); //pos=-1

String s2= s1.toUpperCase(); // s2= “ABC” String s3= s2.toLowerCase(); // s3= “abc”

Trang 32

Lớp String [3]

Mỗi khi thực hiện thay đổi trên một String, một đối tượng String mới sẽ được tạo nên với những thay

đổi trong đó Chuỗi ký tự ban đầu không thay đổi

Toán tử == và != cũng được áp dụng trên các đối tượng thuộc lớp String.

Để so sánh nội dung của hai String, sử dụng

phương thức equals(String)

 Ví dụ

String str1= new String (“abc”);

String str2= new String (“abc”);

[ str1 == str2; str1.equals(str2); ]

Trang 33

Exception

 Các exception trong Java có thể được xử lý trong

chương trình bằng các từ khóa: try, catch,

throw, throws, và finally.

} finally {

Khối_lệnh_kết_thúc;

Trang 34

Các lớp Exception

Trang 35

Xử lý exception [1]

 Có hai cách xử lý exception trong Java:

Xử lý exception trong khối lệnh catch.

 Khai báo phương thức ném ra exception tương ứng – không xử lý exception.

void f() throws IOException { … }

catch block finally

Exception

finally

No exception

try block

Trang 37

Nhập / xuất dữ liệu

Sử dụng các luồng nhập xuất trong gói java.io

 Có hai loại luồng nhập/xuất trong Java:

 Các luồng dữ liệu kiểu byte:

 Xử lý dữ liệu nhập/xuất theo từng byte.

Hai lớp cơ sở là: InputStream và OutputStream

 Các luồng dữ liệu kiểu ký tự:

 Xử lý dữ liệu theo từng ký tự

Hai lớp cơ sở là: Reader và Writer

Trang 38

Filter OutputStream OutputStreamByteArray

Buffered OutputStream

DataOutput Stream Print

Stream

Trang 39

String str= new String(data, 0, len); System.out.println(str);

} catch (IOException ex) {

ex.printStackTrace();

}

Trang 41

Đọc dữ liệu từ tập tin

Đọc dữ liệu, sử dụng lớp đối tượng FileInputStream

FileInputStream fis= new FileInputStream(…); byte buffer[]= new byte[128];

Trang 42

Ghi dữ liệu ra tập tin

Xuất dữ liệu, sử dụng lớp đối tượng FileOutputStream

Trang 44

Internet Address

Lớp InetAddress đóng gói địa chỉ IP và tên miền

của một máy tính

Lớp InetAddress không có hàm khởi tạo Để tạo ra

đối tượng thuộc lớp này, sử dụng các phương thức:

Trang 45

 Có hai loại socket

 TCP (Transmission Control Protocol)

 UDP (User Datagram Protocol)

Trang 46

 Các hàm khởi tạo của lớp Socket

1 public Socket (String host, int port)

throws UnknownHostException, IOException

2 public Socket (InetAddress address, int

port) throws IOException

3 public Socket (String host, int port, InetAddress localaddr, int localPort)

throws IOException

4 public Socket (InetAddress addr, int

localport, boolean b ) throws IOException

Trang 47

Socket [2]

Các phương thức thao tác trên Socket

1 public InputStream getInputStream()

Trang 48

ServerSocket [1]

Các hàm khởi tạo của lớp ServerSocket

1 public ServerSocket ( int port) throws

IOException

2 public ServerSocket ( int port, int

count) throws IOException

3 public ServerSocket ( int port, int

count, InetAddr localaddr) throws

IOException

Trang 49

ServerSocket [2]

Các phương thức thao tác trên ServerSocket

1 public Socket accept() throws

IOException

2 public void close() throws IOException

Trang 50

giao tiếp với Client.

Lấy InputStream và OutputStream để nhận và

gửi dữ liệu với Client

 Gửi và nhận dữ liệu với Client, sử dụng các phương

thức read() và write() của các lớp đối tượng

InputStream và OutputStream.

Đóng Socket và ServerSocket

 Kết thúc chương trình

Trang 51

Server TCP

ServerSocket ssk = new ServerSocket(1234);

Socket sk= ssk.accept();

InputStream is= sk.getInputStream();

OutputStream os= sk.getOutputStream();

byte[] buffer= new byte[128];

int len= is.read(buffer);

System.out.println(new String(buffer,0,len)); sk.close();

ssk.close();

Trang 52

Lập trình Client TCP

Tạo Socket kết nối đến Server

Lấy InputStream và OutputStream để nhận và

gửi dữ liệu với Server

 Gửi và nhận dữ liệu với Server, sử dụng các phương

thức read() và write() của các lớp đối tượng

InputStream và OutputStream.

Đóng Socket

 Kết thúc chương trình

Trang 54

Các hàm khởi tạo của lớp DatagramSocket

1 public DatagramSocket( int port) throws

SocketException

2 public DatagramSocket() throws

SocketException

Trang 55

DatagramSocket [2]

Các phương thức thác tác trên DatagramSocket

1 public void send(DatagramPacket p)

throws IOException

2 public void receive(DatagramPacket p)

throws IOException

3 public void close()

4 public int getLocalPort()

Trang 56

DatagramPacket[1]

Java cung cấp lớp đối tượng DatagramPacket để

tạo những gói tin sử dụng cho UDP socket

Các hàm khởi tạo của lớp DatagramPacket

1 public DatagramPacket ( byte [] buffer,

int length)

2 public DatagramPacket ( byte [] buffer,

int length, InetAddress addr, int port)

Trang 57

DatagramPacket [2]

 Các phương thức thao tác trên gói tin UDP

1 public byte [] getData()

2 public int getLength()

3 public InetAddress getAddress()

4 public int getPort()

Trang 58

Lập trình Server UDP

 Tạo UDP Socket

Tạo DatagramPacket để nhận dữ liệu

 Nhận dữ liệu từ Client

 Đóng UDP Socket

 Kết thúc chương trình

Trang 60

Lập trình Client UDP

 Tạo UDP Socket

Tạo DatagramPacket để gửi dữ liệu

 Gửi dữ liệu đến Server

 Đóng UDP Socket

 Kết thúc chương trình

Trang 61

DatagramPacket pk= new DatagramPacket(

msg.getBytes(), msg.length(), addr, 1234); dsk.send(pk);

dsk.close();

Trang 62

RMI

Trang 63

Library & Tools

Trang 64

B1 RMI Object Interface

 Interface này phải public

 Kế thừa interface Remote, interface Remote này không khai báo hàm nào cả

 Khai báo các phương thức gọi từ xa; các phương thức này phải khai báo có khả năng gây ra ngoại lệ

RemoteException, đây chính là lớp cơ sở cho hầu hết các ngoại lệ khác mà RMI sử dụng.

Trang 66

B2 RMI Object Class

Lớp này phải thi công interface ở xa vừa tạo ở B1

 Cài đặt phương thức gọi từ xa đã được khai báo trong

interface ở xa

 Đối tương thuộc lớp này phải được “xuất khẩu” trước khi

có thể phục vụ RMI Do đó, lớp này hoặc phải kế thừa lớp

UnicastRemoteObject hoặc chúng ta phải “xuất khẩu” đối tượng thuộc lớp sau khi tạo ra bằng hàm exportObject( )

 Nếu lớp này kế thừa lớp UnicastRemoteObject , thì chúng ta phải cài đặt hàm khởi tạo cho lớp này để đối tượng thuộc lớp có thể gọi thực hiện hàm khởi tạo của lớp

UnicastRemoteObject tự động.

Trang 67

public class CalendarImpl extends

UnicastRemoteObject implements iCalendar {

public CalendarImpl ( ) throws

RemoteException { } public Date getDate ( ) throws

RemoteException { return new Date( );

}

}

Trang 68

B3 Server

 Tạo đối tượng phục vụ RMI

 Có thể tạo bộ đăng ký RMI Registry cục bộ của chương

trình hoặc chạy chương trình tiện ích rmiregistry.exe

 Đăng ký đối tượng phục vụ RMI với RMI Registry

Trang 69

Cài đặt Server

import java.rmi.*;

import java.rmi.registry.LocateRegistry;

public class CalendarServer {

public static void main (String[] args){

LocateRegistry.createRegistry( 1099 ); CalendarImpl cal = new CalendarImpl( ); Naming.bind(“rmi://localhost/

CalendarImpl”,cal );

System.out.println(“Ready for RMI’s.”); }

}

Trang 71

Cài đặt Client

import java.rmi.*;

public class CalendarUser {

public static void main ( String args[] ) {

long t1=0, t2=0;

iCalendar remoteCal=

(iCalendar) Naming.lookup(

rmi://localhost/CalendarImpl”); t1= remoteCal.getDate( ).getTime( );

t2= remoteCal.getDate( ).getTime( );

System.out.println ( “This RMI call

took “ + (t2 – t1) + “ms”); }

Ngày đăng: 22/04/2013, 21:11

TỪ KHÓA LIÊN QUAN

w