Xem mẫu

  1. Chương 5 L p trình socket
  2. N I DUNG • T ng quan • L p trình Socket v i TCP • L p trình Socket v i UDP
  3. T ng quan application transport network data link Vi t chương trình physical – 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 v i browser Vi t chương trình trên các application transport thi t b m ng ngoài ph m network data link application physical vi này transport network data link physical
  4. L p trình 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 Socket API socket • ư c gi i thi u trong BSD4.1 M t giao ti p c c b UNIX, 1981 trên host, ư c t o • ư c kh i t o, s d ng và h y b i ng d ng và ư c m t cách tư ng minh b i ng i u khi n b i h d ng i u hành, qua ó quá • Mô hình client/server trình ng d ng có th • Hai lo i d ch v truy n t i qua truy n (hay nh n) n socket API: (hay t ) quá trình – Datagram không b o m khác – connection-oriented b o m
  5. Giao ti p gi a các quá trình trên hai host khác nhau • process truy n/nh n host hay host hay server server thông i p n/t socket c a nó Ki m soát b i ngư i l p trình • socket tương t như c a process process ra vào socket socket – Quá trình truy n thông TCP v i TCP v i Internet i p ra c a Buffer và Buffer và các bi n các bi n – 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, Ki m soát b i h i u hành thông tin ư c chuy n n socket c a quá trình thu • API: (1) ch n giao th c truy n t i ; (2) kh năng s a m t vài thông s
  6. N I DUNG • T ng quan • L p trình Socket v i TCP • L p trình Socket v i UDP
  7. L p trình socket v i TCP Socket: Như là c a thông gi a các quá trình ng d ng và giao th c truy n t i end-to-end (UCP hay TCP) TCP service: truy n t i b o m cho các byte t m t process n m t process khác ư c ki m soát b i ư c ki m soát b i process process ngư i l p trình ngư i l p trình ng d ng socket ng d ng socket TCP v i TCP v i ư c ki m soát b i ư c ki m soát b i Buffer và Buffer và h i u hành internet h i u hành các bi n các bi n host hay host hay server server
  8. L p trình socket v i TCP Client ph i liên l c v i server • Khi ư c liên h b i client, server TCP t o socket m i • Trư c h t quá trình trên quá trình server giao ti p server ph i ch y v i client • server ph i t o socket – Cho phép server giao ti p ón ti p client v i nhi u quá trình client Client liên l c server b ng: – Các ch s port ư c dùng • T o TCP socket phân bi t các client • Ch ra IP address, port number c a quá trình trên server T góc ng d ng • Khi client t o socket: client TCP cung c p d ch v truy n t i có TCP thi t l p k t n i n tr t t và b o m gi a client và server TCP server
  9. Tương tác gi a client socket và server socket qua TCP Server Client T o socket, port=x, ón yêu c u: welcomeSocket = ServerSocket() TCP T o socket, i yêu c u Thi tl pk tn i connect to hostid, port=x k tn i n clientSocket = connectionSocket = Socket() welcomeSocket.accept() G i yêu c u dùng c yêu c u t clientSocket connectionSocket Ghi ph n h i ra connectionSocket c ph n h i t clientSocket close close connectionSocket clientSocket
  10. Thu t ng Stream keyboard monitor • Stream là m t tu n t các ký t i vào hay i ra inFromUser input m t quá trình. stream Client Process • M t input stream ư c process k t v i m t ngu n nh p c a quá trình, ví d bàn phím hay socket. inFromServer outToServer • M t output stream ư c output input stream stream k t v i m t ích n c a quá trình, ví d màn hình client TCP clientSocket socket hay socket. TCP socket to network from network
  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 qua socket (outToServer stream) 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)
  12. 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; To BufferedReader inFromUser = input stream new BufferedReader(new InputStreamReader(System.in)); To client socket, Socket clientSocket = new Socket("hostname", 6789); k t n i n server DataOutputStream outToServer = To new DataOutputStream(clientSocket.getOutputStream()); output stream g n vào socket
  13. Ví d : Java client (TCP) (ti p theo). To BufferedReader inFromServer = input stream new BufferedReader(new g n vào socket InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); G i dòng ký outToServer.writeBytes(sentence + '\n'); t n server modifiedSentence = inFromServer.readLine(); c dòng ký t t server System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } }
  14. 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; To welcoming socket ServerSocket welcomeSocket = new ServerSocket(6789); T i port 6789 while(true) { i client liên h Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = new BufferedReader(new T o input stream, InputStreamReader(connectionSocket.getInputStream())); g n vàosocket
  15. Ví d : Java server (TCP) (ti p theo) T o output stream, DataOutputStream outToClient = g n vào socket new DataOutputStream(connectionSocket.getOutputStream()); c dòng ký clientSentence = inFromClient.readLine(); t t socket capitalizedSentence = clientSentence.toUpperCase() + '\n'; Ghi dòng outToClient.writeBytes(capitalizedSentence); ký t ra socket } } } K t thúc vòng l p while, tr l i ch k t n i khác t client
  16. N I DUNG • T ng quan • L p trình Socket v i TCP • L p trình Socket v i UDP
  17. L p trình socket v i UDP UDP: không có k t n i gi a client và server • Không b t tay T góc ng d ng • sender g n a ch IP và UDP cung c p d ch v port c a ích vào m i truy n t i không b o m gói gi a client và server • server ph i tách a ch IP và port c a client t gói nh n ư c UDP: data có th không úng th t máy thu hay m t
  18. Tương tác gi a client socket và server socket qua UDP Server Client T o socket, T o socket, clientSocket = port= x. DatagramSocket() serverSocket = DatagramSocket() T o datagram v i server IP và port=x; g i datagram qua clientSocket c datagram t serverSocket Ghi ph n h i ra serverSocket c datagram t ch ra clientSocket client address, port number close clientSocket
  19. Ví d : Java client (UDP) keyboard monitor inFromUser input stream Client Process Input: nh n packet process Output: truy n packet (TCP g i receivePacket sendPacket dòng byte) UDP UDP packet packet client UDP clientSocket socket UDP socket to network from network
  20. Ví d : Java client (UDP) import java.io.*; import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { To input stream BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); To client socket DatagramSocket clientSocket = new DatagramSocket(); Thông d ch InetAddress IPAddress = InetAddress.getByName("hostname"); hostname sang IP address dùng DNS byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes();
nguon tai.lieu . vn