TCP:
Transport control protocol is transport layer protocol in TCP/IP model. It is connection oriented and reliable protocol. It guarantees packet transmission between process to process.
Connection oriented means that for transmission before starting connection is established and then data is transmitted, that is the reason reliability comes into the picture.
So below is typical abstract diagram for TCP protocol, please note this picture just shows the overall functionality of the entire process not the specifics, for more information please click here.
Transport control protocol is transport layer protocol in TCP/IP model. It is connection oriented and reliable protocol. It guarantees packet transmission between process to process.
Connection oriented means that for transmission before starting connection is established and then data is transmitted, that is the reason reliability comes into the picture.
So below is typical abstract diagram for TCP protocol, please note this picture just shows the overall functionality of the entire process not the specifics, for more information please click here.
TCP Handshaking Process |
The TCP Server Code in java is given below:
This is a demo program which will take sort alphabets sent from client program.
import java.net.*; import java.util.Arrays; import java.io.*; public class TCPServer{ private ServerSocket serverSocket; public TCPServer(int port) throws IOException { serverSocket = new ServerSocket(port); // setting port number @server serverSocket.setSoTimeout(10000); // timeout of socket @server } public static void main(String [] args) throws IOException { int port = 1025; TCPServer tcpServer = new TCPServer(port); while(true) { try { System.out.println("Waiting for client on port " + tcpServer.serverSocket.getLocalPort() + "..."); Socket server = tcpServer.serverSocket.accept(); // Con is established System.out.println("Just connected to " + server.getRemoteSocketAddress()); DataInputStream in = new DataInputStream(server.getInputStream()); String[] arr = in.readUTF().split(" "); // getting data from client // Performing sorting operation String line=""; Arrays.sort(arr); for(String a: arr) line += a+" " ; DataOutputStream out = new DataOutputStream(server.getOutputStream()); out.writeUTF(line); // sending data to client server.close(); }catch(SocketTimeoutException s) { System.out.println("Socket timed out!"); break; }catch(IOException e) { e.printStackTrace(); break; } } } }
The code is self descriptive.
The Code for TCP Client program:
import java.io.*; import java.net.*; public class TCPClient { public static void main(String argv[]) throws Exception { String serverName = "localhost"; int port = 1025; try{ System.out.println("Connecting to " + serverName + " on port " + port+" .."); // Connection request // Connection reply Socket client = new Socket(serverName, port); System.out.println("Just connected to " + client.getRemoteSocketAddress()); // get local port from server // get output stream towards server OutputStream outToServer = client.getOutputStream(); DataOutputStream out = new DataOutputStream(outToServer); System.out.println("sending : Z X C V B N M A to server :"+serverName); out.writeUTF("Z X C V B N M A"); // sending data to server InputStream inFromServer = client.getInputStream(); DataInputStream in = new DataInputStream(inFromServer); System.out.println("Server replied: " +in.readUTF()); // getting reply from server client.close(); } catch(IOException e){ e.printStackTrace(); } } }
Note:
- We have taken port 1025 as the port on which client will make the request. We have taken this port as ports from 0-1024 are reserved and we can not use them for our experiment purposes.
- You have seen "setSoTimeout", this will limit the time of server to wait for client.
How to Run the above code:
- First run the server code
- Then run the client code.
The Output:
Connecting to localhost on port 1025 ..
Just connected to localhost/127.0.0.1:1025
sending : Z X C V B N M A to server :localhost
Server replied: A B C M N V X Z
Comments
Post a Comment