Bài giảng Lập trình mạng: Chương 7 - ĐH Công nghệ Đồng Nai
lượt xem 4
download
Bài giảng Lập trình mạng - Chương 7 mô tả những công việc liên quan đến UDP Socket. Chương này giúp người học hiểu được những kiến thức tổng quan về UDP, hiểu được lập trình với Socket UDP, nắm bắt được sự tương tác giữa socket sender/reciever,... Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình mạng: Chương 7 - ĐH Công nghệ Đồng Nai
- UDP Socket 1
- UDP Dịch vụ không kết nối Không cung cấp: thiết lập kết nối, tin cậy, điều khiển dòng, thời gian, … Tại sao sử dụng UDP? 2
- UDP Nhược điểm Các thông điệp được nhận theo thứ tự ngẫu nhiên. Không có gì đảm bảo là các gói tin sẽ đến đích Ưu điểm: UDP là một giao thức có tốc độ truyền tin nhanh Truyền tin unicast, broadcast và multicast. Kiểu truyền Thông điệp unicast sẽ gửi từ nút này tới nút khác. Truyền tin broadcast nghĩa là một thông điệp có thể được gửi tới tất cả các nút trong một mạng. Multicast cho phép các thông điệp được truyền tới một nhóm các nút được lựa chọn.
- Lập trình với Socket UDP UDP: không kết nối giữa client và server Không bắt tay Phía gởi sẽ gắn địa chỉ IP và Port của đích vào mỗi đoạn dữ liệu. OS sẽ đính kèm IP và Port của máy gửi vào mỗi đoạn. Server loại bỏ phần IP và port của máy gửi và nhận đoạn dữ liệu. 4
- Tương tác giữa socket sender/reciever Reciever Sender Tạo socket, Tạo socket, port= x. serverSocket = clientSocket = DatagramSocket() DatagramSocket() Tạo datagram với IP và port=x; gửi datagram thông qua Đọc datagram từ clientSocket serverSocket Viết hồi đáp sử dụng Đọc datagram từ serverSocket clientSocket dựa vào số hiệu cổng Và địa chỉ client. đóng clientSocket 5
- Ví dụ: Java client (UDP) keyboard monitor inFromUser input stream Client Input: nhận packet Process (dùng UDP để process nhận “byte stream”) Output: gửi packet (dùng UDP để gửi receivePacket “byte stream”) sendPacket UDP UDP packet packet client UDP clientSocket socket UDP socket to network from network 6
- Ví dụ: Java client (UDP) import java.io.*; import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { Tạo Luồng nhập BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); Tạo socket client DatagramSocket clientSocket = new DatagramSocket(); Dịch tên miền hostname sang InetAddress IPAddress = InetAddress.getByName(“localhost"); địa chỉ IP byte[] sendData = new byte[1024]; sử dụng DNS byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); 7
- Ví dụ: Java client UDP Tạo datagram với dữ liệu, độ dài dữ DatagramPacket sendPacket = liệu, địa chỉ IP, số new DatagramPacket(sendData, sendData.length, IPAddress, 9876); hiệu cổng Gửi datagram clientSocket.send(sendPacket); Tới server DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); Đọc datagram clientSocket.receive(receivePacket); từ server String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close(); } } 8
- Ví dụ: Java server UDP import java.io.*; import java.net.*; class UDPServer { public static void main(String args[]) throws Exception Tạo datagram socket { Lắng nghe tại port 9876 DatagramSocket serverSocket = new DatagramSocket(9876); byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { Cấp phát bộ nhớ để nhận gói dữ liệu DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); Nhận gói serverSocket.receive(receivePacket); dữ liệu 9
- Ví dụ: Java server UDP String sentence = new String(receivePacket.getData()); Lấy địa chỉ IP, port InetAddress IPAddress = receivePacket.getAddress(); của gói gửi int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); Tạo datagram để gởi tới client DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); Viết Datagram serverSocket.send(sendPacket); ra socket } } } Kết thúc lặp và đợi gói dữ liệu khác 10
- DatagramPacket Kích thước tối đa một gói dữ liệu là 65,507 byte Phương thức khởi tạo public DatagramPacket(byte[] buffer, int length) public DatagramPacket(byte[] buffer, int offset, int length) 11
- DatagramPacket (tt) Các phương thức khởi tạo khác public DatagramPacket(byte[] data, int length, InetAddress destination, int port) public DatagramPacket(byte[] data, int offset, int length, InetAddress destination, int port) public DatagramPacket(byte[] data, int length, SocketAddress destination, int port) public DatagramPacket(byte[] data, int offset, int length, SocketAddress destination, int port) 12
- Ví dụ String s = "Hello…"; byte[] data = s.getBytes("ASCII"); try { InetAddress ia = InetAddress.getByName("it.dntu.edu.vn"); int port = 7; DatagramPacket dp = new DatagramPacket(data, data.length, ia, port); } catch (IOException ex) { } 13
- Các phương thức Thao tác với địa chỉ public InetAddress getAddress( ) public int getPort( ) public SocketAddress getSocketAddress( ) public void setAddress(InetAddress remote) public void setPort(int port) public void setAddress(SocketAddress remote) 14
- Các phương thức Thao tác với dữ liệu public byte[] getData( ) public int getLength( ) public int getOffset( ) public void setData(byte[] data) public void setData(byte[] data, int offset, int length ) public void setLength(int length) 15
- Ví dụ import java.net.*; public class DatagramExample { public static void main(String[] args) { String s = "Essayons."; byte[] data = s.getBytes( ); try { InetAddress ia = InetAddress.getByName("www.liafa.jussieu.fr"); int port =7; DatagramPacket dp; dp = new DatagramPacket(data, data.length, ia, port); System.out.println(" Un packet pour" + dp.getAddress( )); System.out.println(" port " + dp.getPort( )); System.out.println("il y a " + dp.getLength( )); System.out.println(" bytes dans le packet"); s=new String(dp.getData( ), dp.getOffset( ), dp.getLength( )) System.out.println(s); }catch (UnknownHostException e) { System.err.println(e); } }} 16
- DatagramSocket Phương thức khởi tạo public DatagramSocket( ) throws SocketException public DatagramSocket(int port) throws SocketException public DatagramSocket(int port, InetAddress interface) throws SocketException public DatagramSocket(SocketAddress interface) throws SocketException (protected DatagramSocket(DatagramSocketImpl impl) throws SocketException) 17
- Ví dụ java.net.*; public class UDPPortScanner { public static void main(String[] args) { for (int port = 1024; port
- Gởi và nhận public void send(DatagramPacket dp) throws IOException public void receive(DatagramPacket dp) throws IOException 19
- Ví dụ: Echo UDPServer UDPEchoServer UDPEchoClient SenderThread ReceiverThread 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình mạng: Chương 3 - Lương Ánh Hoàng
90 p | 143 | 16
-
Bài giảng Lập trình mạng: Chương 7 - Phạm Trần Vũ
63 p | 110 | 11
-
Bài giảng Lập trình mạng: Chương 1 - Lương Ánh Hoàng
17 p | 122 | 10
-
Bài giảng Lập trình mạng: Chương 2 - ĐH Công nghệ Đồng Nai
65 p | 77 | 8
-
Bài giảng Lập trình mạng: Chương 3 - ThS. Trần Đắc Tốt
37 p | 50 | 7
-
Bài giảng Lập trình mạng: Chương 2 - ThS. Trần Đắc Tốt
49 p | 23 | 7
-
Bài giảng Lập trình mạng: Chương 4 - ĐH Công nghệ Đồng Nai
54 p | 79 | 6
-
Bài giảng Lập trình mạng: Chương 1 - Trương Đình Huy
14 p | 32 | 6
-
Bài giảng Lập trình mạng: Chương 2 - ThS. Trần Đắc Tốt
49 p | 70 | 6
-
Bài giảng Lập trình mạng - Chương 5: Lập trình Web - CGI
112 p | 75 | 5
-
Bài giảng Lập trình mạng: Chương 2 - Phạm Trần Vũ
38 p | 80 | 4
-
Bài giảng Lập trình mạng: Chương 1 - ĐH Công nghệ Đồng Nai
23 p | 71 | 4
-
Bài giảng Lập trình mạng - Chương 1: Giới thiệu Lập trình mạng
18 p | 62 | 4
-
Bài giảng Lập trình mạng: Chương 3 - Phạm Trần Vũ
24 p | 87 | 3
-
Bài giảng Lập trình mạng: Chương 4 - Phạm Trần Vũ
10 p | 102 | 3
-
Bài giảng Lập trình mạng - Chương 2: Lập trình mạng với thư viện Winsock của Windows
37 p | 44 | 3
-
Bài giảng Lập trình mạng - Chương 5: Lập trình với hệ thống web
41 p | 30 | 3
-
Bài giảng Lập trình mạng - Chương 7: Chương trình chat trên nhiều máy
19 p | 49 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn