Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 36 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
36
Dung lượng
2,55 MB
Nội dung
Socket Giới thiệu Lập trình Socket TCP Lập trình Socket UDP Lập trình Multicast Bộ mơn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ Giới thiệu Socket Khái niệm socket Góc độ mạng: Socket điểm cuối đường nối kết chiều chương trình thực thi mạng Góc độ người lập trình: Socket giao diện lập trình ứng dụng (API) hay thư viện hàm hỗ trợ, dùng để nối kết chương trình ứng dụng với lớp mạng hệ thống mạng TCP/IP Giới thiệu lần đầu hệ điều hành UNIX version 4.3 BSD Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ Giới thiệu Socket Phân loại AF_UNIX: giao tiếp trình máy AF_INET: giao tiếp trình nhiều máy tính Bộ mơn HTMT&TT, Khoa Cơng Nghệ Thơng Tin TT, ĐH Cần Thơ Giới thiệu Socket Cơ chế giao tiếp Một hai q trình phải cơng bố số hiệu cổng socket mà sử dụng để nhận gởi liệu Các q trình khác giao tiếp với q trình cơng bố cổng cách tạo socket Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ Giới thiệu Socket Cổng (port): số 16 bit Từ – 1023: cổng hệ thống Từ 1024 – 49151: cổng phải đăng ký (registered port) Từ 49152 – 65535: cổng dùng riêng (private port) Một số cổng thông dụng Echo: cổng (TCP, UDP) Web: cổng 80 (TCP) FTP: cổng 21 cho nối kết 20 cho liệu (TCP) SMTP: cổng 25 (TCP) POP: cổng 110 (TCP) Telnet: cổng 23 (TCP) DNS: cổng 53 (TCP UDP) SNMP: cổng 161 (UDP) RIP: cổng 520 (UDP) Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ Giới thiệu Socket Các chế độ giao tiếp TCP (Transmission Control Protocol): có nối kết UDP (User Datagram Protocol): không nối kết Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ Giới thiệu Socket So sánh TCP UDP Có nối kết (TCP) Khơng nối kết (UDP) Tồn kênh giao tiếp ảo q trình Khơng tồn kênh giao tiếp ảo trình Dữ liệu gửi theo chế độ bảo đảm: có kiểm tra lỗi, truyền lại gói tin lỗi hay mất, bảo đảm thứ tự đến gói tin Dữ liệu gửi theo chế độ không bảo đảm: Không kiểm tra lỗi, không phát khơng truyền lại gói tin bị lỗi hay bị mất, không bảo đảm thứ tự đến gói tin Dữ liệu xác Tốc độ truyền chậm Dữ liệu khơng xác Tốc độ truyền nhanh Thích hợp cho ứng dụng cần độ xác cao: truyền file, thơng tin điều khiển Thích hợp cho ứng dụng cần tốc độ, không cần xác cao: truyền âm thanh, hình ảnh Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ Giới thiệu Socket So sánh TCP UDP Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ Socket chế độ có nối kết (TCP) Bộ mơn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ Socket chế độ có nối kết (TCP) Giao thức ứng dụng Trao đổi thông tin Client Server phải tuân thủ giao thức ứng dụng Nếu theo Protocol định nghĩa sẵn: tham khảo RFC Nếu ứng dụng riêng biệt: tự thiết kế protocol riêng TCP Socket Java Thơng qua lớp gói java.net Các lớp chính: java.net.Socket: hỗ trợ xây dựng chương trình Client java.net.ServerSocket: hỗ trợ xây dựng chương trình Server Bộ mơn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ 10 Socket chế độ có nối kết (TCP) Chương trình Server phục vụ song song Phần 1: Lặp lại công việc sau: Tạo kênh giao tiếp ảo với khách hàng Tạo Phần để xử lý thông điệp yêu cầu khách hàng Phần 2: Lặp lại công việc sau: Lắng nghe yêu cầu nối kết khách hàng Chấp nhận yêu cầu nối kết : Chờ nhận thông điệp yêu cầu khách hàng Phân tích xử lý yêu cầu Gửi thông điệp trả lời cho khách hàng Phần kết thúc kênh ảo bị xóa Phần thiết kế thread (để thực thi song song với phần 1) Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ 22 Socket chế độ có nối kết (TCP) Chương trình PTCPEchoServer Bộ mơn HTMT&TT, Khoa Cơng Nghệ Thông Tin TT, ĐH Cần Thơ 23 Socket chế độ có nối kết (TCP) Chương trình PTCPEchoServer Biên dịch thực thi Server Thực thi Client: Mở nhiều cửa sổ khác để thực thi TCPEchoClient1 Hoặc thực thi nhiều máy tính khác Nhận thấy: PTCPEchoServer có khả phục vụ lúc nhiều Client Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ 24 Socket chế độ không nối kết (UDP) Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ 25 Socket chế độ không nối kết (UDP) UDP Socket Java Thông qua lớp gói java.net Các lớp chính: java.net.DatagramSocket: hỗ trợ xây dựng Socket dạng UDP java.net.DatagramPacket: gói tin dạng thư tín người dùng (User Datagram) giao tiếp Client Server, gồm: Dữ liệu truyền (tối đa khoảng 60.000 byte) Địa IP trình gửi Cổng trình gửi Địa IP trình nhận Cổng trình nhận Cổng ứng dụng sử dụng TCP UDP trùng chúng thực thi không gian khác Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ 26 Socket chế độ không nối kết (UDP) Lớp java.net.DatagramPacket VD: DatagramPacket (byte[] b, int n) Tạo gói tin UDP chứa n bytes liệu mảng b Thường dùng cho trình nhận để lưu gói nhận byte buff[] = new byte[60000]; // Noi chua du lieu nhan duoc DatagramPacket inPacket = new DatagramPacket(buff, buff.length); DatagramPacket(byte[] b, int n, InetAddress ia, int port) Tạo gói tin UDP chứa liệu (gồm n byte lưu mảng b), địa IP cổng máy nhận liệu VD: try { InetAddress ad = InetAddess.getByName("www.cit.ctu.edu.vn"); int port = 19; // Cổng socket nhận String s = "My second UDP Packet"; // Dữ liệu gửi byte[] b = s.getBytes(); // Đổi chuỗi thành mảng bytes DatagramPacket outPacket=new DatagramPacket(b, b.length, ad, port); } catch (UnknownHostException e) { System.err.println(e); } Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ 27 Socket chế độ không nối kết (UDP) Lớp java.net.DatagramPacket Lấy thông tin gói tin UDP: public synchronized public synchronized public synchronized public synchronized InetAddress getAddress() int getPort() byte[] getData() int getLength() Gán thơng tin vào gói tin UDP: public synchronized void public synchronized void public synchronized void public synchronized void Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ setAddress(InetAddress ad) setPort(int port) setData(byte[] b) setLength(int len) 28 Socket chế độ không nối kết (UDP) Lớp java.net.DatagramSocket DatagramSocket() throws SocketException Tạo Socket theo chế độ không nối kết cho Client Cổng gán ngẫu nhiên DatagramSocket(int port) throws SocketException Tạo Socket theo chế độ không nối kết cho Server Cổng phục vụ có giá trị port void send(DatagramPacket dp) throws IOException Gửi gói tin dp synchronized void receive(DatagramPacket dp) throws IOException Chờ nhận gói tin UDP Q trình bị nghẽn có liệu đến Bộ mơn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ 29 Socket chế độ khơng nối kết (UDP) Chương trình UDPEchoClient Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ 30 Socket chế độ không nối kết (UDP) Chương trình UDPEchoServer Bộ mơn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ 31 Socket chế độ không nối kết (UDP) Biên dịch thực thi Giả sử Server thực thi máy tính địa 172.18.213.233, thực thi Client: java UDPEchoClient 172.18.213.233 Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ 32 Lập trình multicast Khái niệm Unicast: máy tính gửi máy tính nhận Multicast: liên lạc theo nhóm Gửi quảng bá, đến nhóm máy tính cho trước Thuộc địa lớp D: 224.0.0.0 - 239.255.255.255 Địa 224.0.0.1 địa dành riêng Ping 224.0.0.1: tất máy tính hỗ trợ multicast trả lời Ứng dụng multicast: Game nhiều người chơi Giải thuật vạch đường (Routing Protocol) Ứng dụng mà đối tượng nhận chung loại thông tin Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ 33 Lập trình multicast Lập trình Multicast dùng Java Sử dụng lớp java.net.MulticastSocket Là DatagramSocket (UDP) Gia nhập (joining) vào nhóm máy tính multicast Một máy tính gửi gói tin đến nhóm, thành viên nhóm nhận gói tin VD: // Gia nhập nhóm multicast địa 228.5.6.7 InetAddress group = InetAddress.getByName("228.5.6.7"); MulticastSocket s = new MulticastSocket(6789); s.joinGroup(group); // Thốt khỏi nhóm multicast s.leaveGroup(group); Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ 34 Lập trình multicast Cài đặt dịch vụ tên Time Service phục vụ cổng 9013, dùng để gửi thông tin thời gian đến nhóm khách hàng địa multicast 230.0.0.1 Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ 35 Lập trình multicast Có thể thử nghiệm chương trình cách thực thi chương trình Client đồng thời nhiều máy tính có địa IP khác Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin TT, ĐH Cần Thơ 36 ... TT, ĐH Cần Thơ 33 Lập trình multicast Lập trình Multicast dùng Java Sử dụng lớp java.net.MulticastSocket Là DatagramSocket (UDP) Gia nhập (joining) vào nhóm máy tính multicast Một máy... Echo: cổng (TCP, UDP) Web: cổng 80 (TCP) FTP: cổng 21 cho nối kết 20 cho liệu (TCP) SMTP: cổng 25 (TCP) POP: cổng 110 (TCP) Telnet: cổng 23 (TCP) DNS: cổng 53 (TCP UDP) SNMP: cổng 161 (UDP) RIP:...Giới thiệu Socket Khái niệm socket Góc độ mạng: Socket điểm cuối đường nối kết chiều chương trình thực thi mạng Góc độ người lập trình: Socket giao diện lập trình ứng dụng (API)