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

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

34 960 0
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 Java - Lập trình Client/Server
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Lập Trình Máy Tính
Thể loại Báo cáo môn học
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 34
Dung lượng 1,1 MB

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

Nội dung

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 Clie

Trang 2

Nội dung của chương 07

 Giao tiếp trên Internet

 Giao tiếp Client/Server và Socket

 Các lớp cần thiết của gói thư viện java.net

Trang 3

– SMTP – pop – dns

 Lập trình các ứng dụng mạng

socket API

Trang 4

– e.g., email, ftp, Web

application

transport network data link physical

application

transport network data link physical

Trang 5

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.

tiến trình có thể truyền

thông với nhau qua

interprocess

khiển bởi hệ điều hành).

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

Trang 6

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

Trang 7

 Socket : Internet API

– Hai tiến trình truyền

Trang 8

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.

 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.

Trang 9

Các yêu cầu cho một số ứng dụng

Application

file transfer

e-mail Web documents

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

Trang 10

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

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?

Trang 11

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

proprietary (e.g., Vocaltec)

Underlying transport protocol

TCP TCP TCP TCP TCP or UDP

TCP or UDP typically UDP

Trang 12

– Truyền datagram không tin cậy

– Tin cậy, hướng kết nối theo

byte.

a host-local ,

application-created/owned ,

OS-controlled interface (a “door”) into which application process can

both send and receive messages to/from another (remote or

local) application process

socket

client/server application mà giao tiếp bằng socket.

Trang 13

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.

process

TCP with buffers, variables

process

TCP with buffers, variables

socket

Người phát triển điều khiển

Điều khiển bởi

hệ điều hành

host or server internet

Trang 14

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

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

Trang 15

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.

Trang 16

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 <HostName>"); return;}

InetAddress host = InetAddress.getByName(args[0]);

String hostName = host.getHostName();

System.out.println("Host name:" + hostName);

System.out.println("IP Address:" + host.getHostAddress());

Trang 17

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

Trang 18

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ủ.

Trang 19

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.

Trang 20

Lập trình Socket TCP

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

hoa và gửi trả về cho client.

 client đọc,in ra dòng kí tự đã biến

đổi từ socket (inFromServer

input stream

output stream

TCP socket

Input stream: sequence of bytesinto process

output stream:

sequence of bytes out of process

Client process

client TCP socket

Trang 21

Tương tác socket Client/server :

Trang 22

DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());

Tạo input stream

Tạo client socket,

kết nối tới server

Tạo output stream,

đính kèm vàosocket

Trang 23

Ví dụ về Java Server (TCP)

BufferedReader inFromServer = new BufferedReader(new

InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine();

(đã biến đổi) gửi

về từ server

Trang 24

Socket connectionSocket = welcomeSocket.accept();

BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));

Trang 25

Ví dụ về Java Server (TCP)

DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());

clientSentence = inFromClient.readLine();

capitalizedSentence = clientSentence.toUpperCase() + '\n';

outToClient.writeBytes(capitalizedSentence);

} } }

Đọc dòng kí tự

trong socket

Tạo output stream, đính kèm vào

socket

Ghi dòng kí tự đã

biến đổi vào socket

Kết thúc vòng lặp while, quay trở về vòng lặp cha, đợi kết nối khác

Trang 26

Lập trình Socket UDP

UDP: không thiết lập kết nối

giữa client và server

Trên quan điểm ứng dụng

UDP cung cấp dịch vụ truyền dữ liệu không tin cậy theo byte (“datagrams”)

giữa Client và Server

Trang 27

Tương tác socket Client/server : UDP

Client

Create, address (hostid, port=x,

send datagram request using clientSocket

create socket,

port=x, for

incoming request:

serverSocket = DatagramSocket()

read request from

serverSocket

write reply to

serverSocket

specifying client host address, port umber

Trang 28

Ví dụ về Java client (UDP)

input stream

UDP packet

UDP socket

Client process

client UDP socket

Trang 29

Ví dụ về Java client (UDP)

import java.io.*;

import java.net.*;

class UDPClient { public static void main(String args[]) throws Exception {

BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));

DatagramSocket clientSocket = new DatagramSocket();

InetAddress IPAddress = InetAddress.getByName("hostname");

byte[] sendData = new byte[1024];

byte[] receiveData = new byte[1024];

String sentence = inFromUser.readLine();

sendData = sentence.getBytes();

Tạo input stream

Tạo client socket

Chuyển hostname

thành địa chỉ IP

sử dụng DNS

Trang 30

Ví dụ về Java client (UDP)

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

clientSocket.send(sendPacket);

DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

clientSocket.receive(receivePacket);

String modifiedSentence = new String(receivePacket.getData());

System.out.println("FROM SERVER:" + modifiedSentence);

clientSocket.close();

} }

gửi về từ server

Trang 31

Ví dụ về Java server (UDP)

import java.io.*;

import java.net.*;

class UDPServer { public static void main(String args[]) throws Exception {

DatagramSocket serverSocket = new DatagramSocket(9876);

byte[] receiveData = new byte[1024];

byte[] sendData = new byte[1024];

while(true) {

DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket);

Tạo datagram socket

ở cổng 9876

Tạo datagram nhận

Nhận datagram

Trang 32

Ví dụ về Java server (UDP)

String sentence = new String(receivePacket.getData());

InetAddress IPAddress = receivePacket.getAddress();

int port = receivePacket.getPort();

String capitalizedSentence = sentence.toUpperCase();

sendData = capitalizedSentence.getBytes();

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);

serverSocket.send(sendPacket);

} } }

gửi tới client

Trang 33

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),

12-sockets.html

HTTP://www.javaworld.com/javaworld/jw-12-1996/jw- “Socket Programming in Java: a tutorial,”

12-sockets.html

Trang 34

HTTP://www.javaworld.com/javaworld/jw-12-1996/jw-CHÚC CÁC ANH/CHỊ

THÀNH CÔNG!

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

TỪ KHÓA LIÊN QUAN

w