baBài giảng - giáo án: Bài giảng Java Chương 7 lập TRÌNH CLIENTSERVER - Pdf 13

LẬP TRÌNH JAVA NC
Chương 07: LẬP TRÌNH
CLIENT/SERVER
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)



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

audio/video: media
player
Mô hình Client-Server
Đặc trưng cho ứng dụng gồm hai
thành phần : clien t và s er ver
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,

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

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

Underlying
transport protocol
TCP
TCP
TCP
TCP
TCP or UDP
TCP or UDP
typically UDP
Lập trình 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.
a
host-local
,
application-
created/owned
,

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


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 <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());
} 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

synchronized void close(): Cắt đứt kết nối với
máy khách.
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
(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)
outToServer
to network from network
inFromServer
inFromUser
keyboard monitor
Process
clientSocket
input
stream
input

close
connectionSocket
read reply from
clientSocket
close
clientSocket
Server
Client
send request using
clientSocket
read request from
connectionSocket
write reply to
connectionSocket
TCP
connection setup
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;
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("hostname", 6789);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());


{
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);

while(true) {

Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));

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


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status