Pengembang aplikasi memiliki kemampuan untuk memperbaiki beberapa parameter TCP, seperti buffer dan maksimum ukuran segmen maksimum Socket Programming with TCP Gambar 2,6-1: Proses berkomunikasi melalui soket TCP
Soket untuk server dan klien Server Menyambut soket Menyambut beberapa kontak awal dari klien. Sambungan soket Dibuat pada kontak awal klien. Socket baru yang didedikasikan untuk klien tertentu. Klien Klien soket Memulai sebuah koneksi TCP ke server dengan membuat objek soket. (Three-way handshake) Tentukan alamat proses server, yaitu alamat IP dari server dan nomor port dari proses
Fungsi pemanggilan Socket socket (): Buat soket bind (): bind socket ke alamat IP lokal dan port # listen (): pasif menunggu koneksi connect (): memulai sambungan ke soket lain reciev (): menerima koneksi baru write (): write data ke socket read (): membaca data dari socket sendto (): mengirimkan datagram UDP lain soket recvfrom (): membaca sebuah datagram dari UDP socket close (): menutup sebuah soket (sambungan meruntuskan)
Sockets Gambar 2,6-2: Klien soket, menyambut dan sambungan soket soket
Layanan TCP : transfer byte stream yang dapat diandalkan process TCP with buffers, variables socket controlled by application developer controlled by operating system process TCP with buffers, variables socket internet client server socket( ) bind( ) connect( ) socket( ) bind( ) listen( ) accept( ) send( ) recv( ) close( ) recv( ) send( ) TCP conn. request TCP ACK
Contoh aplikasi client-server app: klien baris membaca dari standard input (inFromUser streaming), mengirim ke server melalui soket (outToServer streaming) server membaca baris dari soket baris server mengkonversi huruf besar, mengirim kembali ke klien klien membaca, cetakan diubah garis dari socket (inFromServer streaming) output stream: sequence of bytes out of process Client process client TCP socket Input stream: sequence of bytes into process Program Socket denganTCP
Client/server socket interaction: TCP wait for incoming connection request connectionSocket = welcomeSocket.accept() create socket, port=x, for incoming request: welcomeSocket = ServerSocket() create socket, connect to hostid, port=x clientSocket = Socket() close connectionSocket read reply from clientSocket close clientSocket Server (running on hostid) Client send request using clientSocket read request from connectionSocket write reply to connectionSocket TCP connection setup
In Package java.net java.net.Socket Klien mengimplementasikan socket (juga disebut hanya “socket”). Sebuah endpoint untuk komunikasi antara dua mesin Constructor dan Metode Socket (String host, int port): Membuat sebuah stream socket dan menghubungkan ke nomor port tertentu pada nama host InputStream getInputStream () OutputStream getOutputStream () Close() java.net.ServerSocket Server mengimplementasikan socket. Menunggu permintaan datang melalui jaringan. Menjalankan beberapa operasi berdasarkan permintaan. Constructor dan Metode ServerSocket (int port) Socket Accept(): Mendengarkan untuk sambungan dibuat untuk soket ini dan menerima hal itu. Metode ini blok sampai sambungan dibuat. JAVA TCP Sockets
import java.io.*; import java.net.*; class TCPClient { public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence; BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); Socket clientSocket = new Socket("hostname", 6789); DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); TCPClient.java
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); outToServer.writeBytes(sentence + '\n'); modifiedSentence = inFromServer.readLine(); System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } } TCPClient.java
TCPServer.java import java.io.*; import java.net.*; class TCPServer { public static void main(String argv[]) throws Exception { String clientSentence; String capitalizedSentence; ServerSocket welcomeSocket = new ServerSocket(6789); while(true) { Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
TCPServer.java DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); clientSentence = inFromClient.readLine(); capitalizedSentence = clientSentence.toUpperCase() + '\n'; outToClient.writeBytes(capitalizedSentence); }