Bài giảng Lập trình socket

Mục đích: làm thế nào để xây dựng các ứng dụng

client/server truyền dữ liệu qua socket

Socket API

ðưa ra trong BSD4.1 UNIX,

1981

Cho phép ứng dụng tạo ra và

sử dụng socket

Nguyên lý client/server

Có hai dạng socket

 Truyền gói tin, không tin

cậy

 Truyền dòng bytes, tin cậy

pdf18 trang | Chia sẻ: phuongt97 | Lượt xem: 475 | Lượt tải: 0download
Nội dung tài liệu Bài giảng Lập trình socket, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Lp trình socket Mc ñích: làm th nào ñ xây dng các ng dng client/server truy n d li u qua socket Socket API socket ❒ ðư a ra trong BSD4.1 UNIX, 1981 ❒ Cho phép ng dng to ra và Là giao di n (ca) do ứng s dng socket dụng tạo ra trên máy tr ạm, qu ản lý bới OS qua ❒ Nguyên lý client/server ñó các ng dng có th gi ❒ Có hai dng socket và nh n thông ñi p ñn/t  Truy n gói tin, không tin các ng dng khác cy  Truy n dòng bytes, tin cy 1 Lp trình socket viTCP Socket: ca giao ti p gi a các ti n trình và giao th c giao vn (UCP ho c TCP) Dch v TCP: truy n các bytes tin cy t mt ti n trình ñn các ti n trình khác ði u khi n bi Ti n trình ði u khi n b i Ti n trình Lp trình viên L p trình viên socket socket TCP vi TCP vi ði u khi n bi ði u khi n b i B ñm, H ñi u hành B ñ m, internet H ñi u hành Các bi n Các bi n Máy tr m, Máy tr m, máy ch máy ch 2 Lp trình socket vi TCP Client ph i gi yêu cu ti server ❒ khi ñưc client liên lc, server ❒ Ti n trình máy ch ph i ñang TCP to socket mi ñ ti n ñưc th c hi n trình máy ch giao ti p vi ❒ máy ch ph i m socket client (cng) ñ nh n yêu cu t  cho phép nói chuy n vi client nhi u clients Client yêu cu server bng cách:  phân bi t client bng s hi u cng (ch ươ ng 3) ❒ To mt socket TCP trên máy ❒ Ch rõ IP address & port number ca ti n trình máy ch ði vi ng dng ❒ Khi client to socket : client TCP cung cấp dịch vụ truy ền dòng TCP to liên kt ti server bytes tin cậy và có th ứ tự TCP gi ữa client và server 3 Tươ ng tác gi a client/server qua socket TCP Server Client (máy hostid ) to socket, port= x, cho yêu cu ti: welcomeSocket = ServerSocket() To liên kt to socket, ch yêu cu ti TCP kt ni ti hostid , port= x connectionSocket = clientSocket = welcomeSocket.accept() Socket() gi yêu cu t nh n yêu cu t clientSocket connectionSocket tr li ti connectionSocket ñc tr li ti clientSocket ñóng socket connectionSocket ñóng clientSocket 4 Stream keyboard monitor ❒ stream mt chu i ký t vào/ra mt ti n trình. ❒ input input stream ñưc gn vi stream mt ngu n vào, e.g. bàn Client inFromUser Process phím, socket process ❒ output stream ñưc gn vi mt ngu n ra, e.g., màn hình socket. output input stream stream outToServer inFromServer clientclientSocket TCP socket TCP socket to network from network 5 Lp trình socket vi TCP Ví d v ng dng client-server: 1) client ñc các dòng văn bn do ng ưi dùng gõ t bàn phím (inFromUser stream) , gi ti server qua socket ( outToServer stream) 2) server ñc các dòng gi t socket 3) server chuy n sang ch hoa và gi tr li cho client 4) client ñc và in li dòng văn bn nh n ñưc t socket ( inFromServer stream) 6 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); ni ti server To DataOutputStream outToServer = output stream new DataOutputStream(clientSocket.getOutputStream()); ni ti socket 7 Ví d: Java client (TCP), cont. to BufferedReader inFromServer = input stream new BufferedReader(new ni ti socket InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); Gi ti server outToServer.writeBytes(sentence + '\n'); ñc tin t modifiedSentence = inFromServer.readLine(); server System.out.println ("FROM SERVER: " + modifiedSentence ); clientSocket.close(); } } 8 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 socket ch ti port 6789 ServerSocket welcomeSocket = new ServerSocket(6789); while(true) { ch yêu cu t client Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = to input stream, new BufferedReader(new ni ti socket InputStreamReader(connectionSocket.getInputStream())); 9 Ví d: Java server (TCP), cont to output stream DataOutputStream outToClient = n i t i socket new DataOutputStream (connectionSocket.getOutputStream()); ñc thông tin clientSentence = inFromClient.readLine(); t socket capitalizedSentence = clientSentence.toUpperCase() + '\n'; ghi ra socket outToClient.writeBytes(capitalizedSentence); } } } kt thúc while loop và ch yêu cu t client khác 10 Ch ươ ng 2: Tng ng dng ❒ 2.1 Nguyên lý ca các ❒ 2.6. Lp trình socket vi ng dng mng TCP ❒ 2.2 Web và HTTP ❒ 2.7. Lp trình socket vi ❒ 2.3 FTP – File Transfer UDP Protocol ❒ 2.4 Electronic Mail  SMTP, POP3, IMAP ❒ 2.5 DNS 11 Lp trình socket vi UDP UDP: không có liên kt gi a client và ❒ không có giai ñon bt tay ❒ bên gi ch rõ IP address và ði vi ng dng port number ca phía nh n ấ ị ụ ề ữ trên mi gói tin UDP cung c p d ch v truy n d li ệu không tin cậy gi ữa ❒ server s tìm ña ch IP và s client và server hi u cng tươ ng ng bên trong gói tin UDP: các gói tin có th b mt ho c ñn không theo th t 12 Tươ ng tác client/server qua UDP socket Server (máy hostid ) Client to socket, to socket, port= x, cho các y/c ñn: clientSocket = DatagramSocket() serverSocket = DatagramSocket() to gói tin, ñ/c (hostid, port=x, gi gói tin t clientSocket ñc y/c t serverSocket ghi tr li lên serverSocket ñc tr li ti ch rõ ñ/c, cng clientSocket ca client ñóng clientSocket 13 Ví d: Java client (UDP) keyboard monitor input stream inFromUser ProcessClient process Input: ñ c gói tin (nh c li: TCP gi Output: gi gói tin “byte stream ”) (nh c li: TCP gi “byte stream”) UDP UDP packet packet sendPacket receivePacket clientclientSocket UDP socket UDP socket to network from network 14 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(); chuy n ñi InetAddress IPAddress = InetAddress.getByName("hostname"); hostname >IP s d ng DNS byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); 15 Ví d: Java client (UDP), cont. To datagram vi datatosend, DatagramPacket sendPacket = length, IP addr, port new DatagramPacket(sendData, sendData.length, IPAddress, 9876); Gi datagram clientSocket.send(sendPacket); ti 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(); } } 16 Ví d: Java server (UDP) import java.io.*; import java.net.*; class UDPServer { public static void main(String args[]) throws Exception To { datagram socket DatagramSocket serverSocket = new DatagramSocket(9876); ti cng 9876 byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { To vùng ñm nh n datagram DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); Nh n serverSocket.receive(receivePacket); datagram 17 Ví d: Java server (UDP), cont String sentence = new String(receivePacket.getData()); Ly IP addr InetAddress IPAddress = receivePacket.getAddress(); port # ca ng ưi gi int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); To datagram DatagramPacket sendPacket = ñ g i t i client new DatagramPacket(sendData, sendData.length, IPAddress, port); Ghi datagram serverSocket.send(sendPacket); ra socket } } } Kt thúc vòng while, ch datagram khác 18

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_lap_trinh_socket.pdf
Tài liệu liên quan