[r]
(1)Chương 5
(2)NỘI DUNG
• Tổng quan
• Lập trình Socket với TCP
(3)Tổng quan
Viết chương trình
– Chạy hệ thống đầu cuối
– Truyền thơng qua mạng – Ví dụ web server giao tiếp
với browser
Viết chương trình
thiết bị mạng phạm
vi này
application
transport network data link physical
application
transport network data link physical
application
(4)Lập trình socket
Socket API
• Được giới thiệu BSD4.1
UNIX, 1981
• Được khởi tạo, sử dụng hủy
một cách tường minh bởi ứng
dụng
• Mơ hình client/server
• Hai loại dịch vụ truyền tải qua socket API:
– Datagram không bảo đảm – connection-oriented bảo
đảm
Một giao tiếp cục bộ trên host, được tạo bởi ứng dụng và được điều khiển bởi hệ điều hành, qua q trình ứng dụng có thể truyền (hay nhận) đến (hay từ) trình khác
socket
(5)Giao tiếp giữa trình hai host khác nhau
• process truyền/nhận
thơng điệp đến/từ socket của nó
• socket tương tự như cửa ra vào
– Q trình truyền thơng điệp cửa
– Quá trình truyền dựa vào hạ tầng truyền tải phía của cánh cửa,
thông tin được chuyển đến
socket của trình thu
process
TCP với Buffer biến
socket host hay server
process
TCP với Buffer biến
socket host hay server
Internet
Kiểm soát hệ điều hành
Kiểm sốt người lập trình
(6)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
(7)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 để