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

Chuong 7-1 - Lập trình socket - Java

18 387 1

Đ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 18
Dung lượng 169,5 KB

Nội dung

Tương tác giữa client/server qua socket TCP chờ yêu cầu tới connectionSocket = welcomeSocket.accept tạo socket, port=x, cho yêu cầu tới: welcomeSocket = ServerSocket tạo socket, kết nối

Trang 1

Lập trình socket

Socket API

Đưa ra trong BSD4.1 UNIX,

1981

Cho phép ứng dụng tạo ra và

sử dụng socket

Nguyên lý client/server

Có hai dạng socket

 Truyền gói tin, không tin

cậy

 Truyền dòng bytes, tin cậy

Là giao di n (c a) ệ ử do ng

d ng t o ra trên máy ụ ạ

tr m, qu n lý b i OS ạ ả ớ qua

đó các ng d ng có th ứ ụ ể

g i và nh n ử ậ thông đi p ệ

đ n/t các ng d ng khác ế ừ ứ ụ

socket

Mục đích: làm thế nào để xây dựng các ứng dụng

client/server truyền dữ liệu qua socket

Trang 2

Lập trình socket vớiTCP

Socket: cửa giao tiếp giữa các tiến trình và giao thức

giao vận (UCP hoặc TCP)

Dịch vụ TCP: truyền các bytes tin cậy từ một tiến trình

đến các tiến trình khác

socket

Đi u khi n b iề ể ớ

L p trình viênậ

Đi u khi n b i ề ể ở

H đi u hànhệ ề

Máy tr m, ạ

socket

internet

Đi u khi n b iề ể ớ

L p trình viênậ

Đi u khi n b i ề ể ở

H đi u hànhệ ề Máy tr m, ạ

máy chủ

Trang 3

Lập trình socket với TCP

Client phải gửi yêu cầu tới server

Tiến trình máy chủ phải đang

được thực hiện

máy chủ phải mở socket

(cổng) để nhận yêu cầu từ

client

Client yêu cầu server bằng cách:

Tạo một socket TCP trên máy

Chỉ rõ IP address & port

number của tiến trình máy chủ

Khi client tạo socket : client

TCP tạo liên kết tới server

TCP

khi được client liên lạc, server TCP tạo socket mới để tiến trình máy chủ giao tiếp với client

 cho phép nói chuyện với nhiều clients

 phân biệt client bằng số hiệu cổng (chương 3…)

TCP cung c p d ch v truy n dòng ấ ị ụ ề

bytes tin c y và có th t ậ ứ ự

gi a client và server

Đ i v i ng d ng ố ớ ứ ụ

Trang 4

Tương tác giữa client/server qua socket

TCP

chờ yêu cầu tới

connectionSocket = welcomeSocket.accept()

tạo socket,

port=x, cho yêu cầu tới:

welcomeSocket = ServerSocket()

tạo socket,

kết nối tới hostid, port=x

clientSocket =

Socket()

đóng socket

connectionSocket

đọc trả lời tại

clientSocket

đóng

Server

(máy hostid)

Client

gửi yêu cầu từ

clientSocket

nhận yêu cầu từ

connectionSocket

trả lời tại

connectionSocket

T o liên k t ạ ế

TCP

Trang 5

to network from network

keyboard monitor

Process

clientSocket

input stream

input stream

output stream

TCP socket

Client process

client TCP socket

Stream

stream một chuỗi ký tự

vào/ra một tiến trình.

input stream được gắn với

một nguồn vào, e.g bàn

phím, socket

output stream được gắn với

một nguồn ra, e.g., màn hình

socket.

Trang 6

Lập trình socket với TCP

Ví dụ về ứng dụng client-server:

bàn phím (inFromUser stream) , gửi tới server

qua socket (outToServer stream)

client

socket (inFromServer stream)

Trang 7

Ví dụ: Java client (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());

T o ạ input stream

T o ạ client socket,

n i t i server ố ớ

T o ạ output stream

n i t i socket ố ớ

Trang 8

Ví dụ: Java client (TCP), cont.

BufferedReader inFromServer = new BufferedReader(new

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

outToServer.writeBytes(sentence + '\n');

modifiedSentence = inFromServer.readLine();

clientSocket.close();

}

t o ạ input stream

n i t i socket ố ớ

G i t i ử ớ server

đ c tin t ọ ừ server

Trang 9

Ví dụ: Java server (TCP)

import java.io.*;

import java.net.*;

class TCPServer {

public static void main(String argv[]) throws Exception {

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

ch t i port 6789 ờ ạ

ch yêu c u ờ ầ

t client ừ

t o input stream, ạ

n i t i socket ố ớ

Trang 10

Ví dụ: Java server (TCP), cont

DataOutputStream outToClient =

clientSentence = inFromClient.readLine();

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

outToClient.writeBytes(capitalizedSentence);

} } }

đ c thông tin ọ

t socket ừ

t o output ạ

stream

n i t i socket ố ớ

ghi ra socket

k t thúc while loop ế

và ch yêu c u t client khác ờ ầ ừ

Trang 11

Chương 2: Tầng ứng dụng

2.1 Nguyên lý của các

ứng dụng mạng

2.2 Web và HTTP

2.3 FTP – File Transfer

Protocol

2.4 Electronic Mail

 SMTP, POP3, IMAP

2.5 DNS

2.6 Lập trình socket với TCP

2.7 Lập trình socket với UDP

Trang 12

Lập trình socket với UDP

UDP: không có liên kết giữa

client và

không có giai đoạn bắt tay

bên gửi chỉ rõ IP address và

port number của phía nhận

trên mỗi gói tin

server sẽ tìm địa chỉ IP và số

hiệu cổng tương ứng bên

trong gói tin

UDP: các gói tin có thể bị mất

hoặc đến không theo thứ tự

Đ i v i ng d ng ố ớ ứ ụ

UDP cung c p d ch v truy n d ấ ị ụ ề ữ

li u không tin c y gi a ệ ậ ữ

client và server

Trang 13

Tương tác client/server qua UDP socket

đóng

clientSocket

Server (máy hostid)

đọc trả lời tại

clientSocket

tạo socket,

clientSocket = DatagramSocket()

Client

tạo gói tin, đ/c (hostid, port=x,

tạo socket,

port=x, cho các y/c đến:

serverSocket =

DatagramSocket()

đọc y/c từ

serverSocket

ghi trả lời lên

serverSocket

chỉ rõ đ/c, cổng của client

Trang 14

Ví dụ: Java client (UDP)

to network from network

keyboard monitor

Process

clientSocket

UDP packet

input stream

UDP packet

UDP socket

“byte stream”)

Client process

client UDP socket

Trang 15

Ví dụ: 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 đ i ể ổ

hostname ->IP

s d ng ử ụ DNS

Trang 16

Ví dụ: Java client (UDP), cont.

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

} }

T o datagram v i ạ ớ

data-to-send,

length, IP addr, port

G i datagram ử

t i server ớ

đ c datagram ọ

t server ừ

Trang 17

Ví dụ: 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

t i c ng 9876 ạ ổ

T o vùng đ m ạ ệ

nh n datagram ậ

Nh n ậ datagram

Trang 18

Ví dụ: Java server (UDP), cont

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

} } }

L y IP addr ấ

port # c a ng i ủ ườ

g i ử

Ghi datagram

ra socket

K t thúc vòng while, ế

ch datagram khác ờ

T o datagram ạ

đ g i t i client ể ử ớ

Ngày đăng: 10/04/2015, 14:19

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w