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

Chương 5 lập trình socket

23 222 0

Đ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 23
Dung lượng 216,14 KB

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

Nội dung

Giao tiếp giữa các quá trình trên hai host – Quá trình truyền dựa vào hạ tầng truyền tải trên phía kia của cánh cửa, thông tin được chuyển đến socket của quá trình thu process TCP vớ

Trang 1

Chương 5

Lập trình socket

Trang 3

Tổng quan

Viết chương trình

– Chạy trên các hệ thống đầu

cuối – Truyền thông qua mạng

– Ví dụ web server giao tiếp

application

transport network data link physical

application

transport network data link physical

Trang 4

Lập trình socket

Socket API

• Được giới thiệu trong BSD4.1

UNIX, 1981

• Được khởi tạo, sử dụng và hủy

một cách tường minh bởi ứng

socket

Mục tiêu: biết cách xây dựng một ứng dụng

client/server giao tiếp bằng socket

Trang 5

Giao tiếp giữa các quá trình trên hai host

– Quá trình truyền dựa vào

hạ tầng truyền tải trên

phía kia của cánh cửa,

thông tin được chuyển đến

socket của quá trình thu

process

TCP vớiBuffer vàcác biếnsocket

host hayserver

process

TCP vớiBuffer vàcác biếnsocket

host hayserver

Trang 7

Lập trình socket với TCP

dụng và giao thức truyền tải end-to-end (UCP hay TCP)

process đến một process khác

process

TCP với Buffer và các biến

process

TCP vớiBuffer vàcác biến

socket

host hay server internet

Được kiểm soát bởi người lập trình

ứ ng dụng Được kiểm soát bởi

hệ điều hành

Trang 8

Lập trình socket với TCP

Client phải liên lạc với server

• Trước hết quá trình trên

server phải chạy

• server phải tạo socket để

• Khi được liên hệ bởi client,

server TCP tạo socket mới

để quá trình server giao tiếp với client

– Cho phép server giao tiếp với nhiều quá trình client – Các chỉ số port được dùng

để phân biệt các client

TCP cung c ấ p d ị ch v ụ truy ề n t ả i có

tr ậ t t ự và b ả o đ ả m gi ữ a client và

server

Từ góc độ ứng dụng

Trang 9

Tương tác giữa client socket và server

socket qua TCP

Đợi yêu cầu kết nối đến

connectionSocket = welcomeSocket.accept()

Tạo socket,

port=x, để đón yêu cầu:

welcomeSocket = ServerSocket()

Trang 10

input stream

output stream

TCP socket

Client process

client TCP socket

Trang 11

Ví dụ ứng dụng client-server

1) client đọc dòng ký tự từ đầu vào chuẩn

( inFromUser stream ), rồi gửi đến server

2) server đọc dòng ký tự từ socket

3) server đổi các dòng ký tự thành chữ hoa , gửi

ngược lại cho client

4) client đọc và in dòng ký tự từ socket

( inFromServer stream)

Trang 12

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

Tạo input stream

Tạo client socket,

kết nối đến server

Tạo output stream

gắn vào socket

Trang 13

Ví dụ: Java client (TCP) (tiếp theo).

BufferedReader inFromServer = new BufferedReader(new

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

Tạo input stream

Trang 14

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

Tạo welcoming socket

Tại port 6789

Đợi client liên hệ

Tạo input stream,

gắn vàosocket

Trang 15

Ví dụ: Java server (TCP) (tiếp theo)

Trang 17

Lập trình socket với UDP

UDP: không có kết nối giữa

• server phải tách địa chỉ

IP và port của client từ

Trang 18

Tương tác giữa client socket và server

socket qua UDP

serverSocket = DatagramSocket()

Trang 19

Ví dụ: Java client (UDP)

input stream

UDP packet

UDP socket

client UDP socket

Trang 20

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

Thông dịch

hostname sang IP

address dùng DNS

Trang 21

Ví dụ: Java client (UDP) (tiếp theo)

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, length, IP addr, port

Gửi datagram

đến server Đọc datagram

từ server

Trang 22

Vi 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 port 9876

Tạo chỗ cho

datagram nhận

Nhận datagram

Trang 23

Ví dụ: Java server (UDP) (tiếp theo)

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

sender

ghi datagram

Ra socket

Kết thúc vòng lặp while, trở lại chờ datagram khác Tạo datagram để

gửi cho client

Ngày đăng: 04/12/2015, 15:22

TỪ KHÓA LIÊN QUAN