There can be many variations in the TCP program to make it “Application Specific”. One such application specific program is Reverse of a String. For each client input, the server will return the reversed string.
tcpserver.java
import java.io.*;
import java.net.*;
class tcpserver
{
public static void main(String args[])throws Exception
{
System.out.println("Server started....n");
try
{
ServerSocket welcome_socket=new ServerSocket(1234);
while(true)
{
Socket listen_socket=welcome_socket.accept();
BufferedReader server_input=new BufferedReader(new InputStreamReader(System.in));
BufferedReader client_out=new BufferedReader(new InputStreamReader(listen_socket.getInputStream()));
DataOutputStream server_out=new DataOutputStream(listen_socket.getOutputStream());
String client_str,server_str;
client_str=client_out.readLine();
System.out.println("Client:"+client_str+'n');
int strln=client_str.length();
for(int i=strln-1;i>=0;i--)
server_str=server_input.readLine();
server_out.writeBytes(server_str+'n');
}
}
catch (Exception e)
{
System.out.println("Error:"+e.getMessage());
}
}
}
tcpclient.java
import java.io.*;
import java.net.*;
class tcpclient
{
public static void main(String args[])throws Exception
{
System.out.println("Client started...");
try
{
Socket client_socket=new Socket("localhost",1234);
while(true)
{
BufferedReader client_input=new BufferedReader(new InputStreamReader(System.in));
BufferedReader server_out=new BufferedReader(new InputStreamReader(client_socket.getInputStream()));
DataOutputStream client_out=new DataOutputStream(client_socket.getOutputStream());
String client_str,server_str;
System.out.println("Enter string:");
client_str=client_input.readLine();
client_out.writeBytes(client_str+'n');
server_str=server_out.readLine();
System.out.println("Reversed String:"+server_str+'\n');
}
}
catch(Exception e)
{
System.out.println("Error:"+e.getMessage());
}
}
}