Following up on my previous post, we also had to demonstrate a sample Java TCP Server and TCP Client. They are pretty small and give you a good idea about how a TDP Server opens up a port, and then the TCP Client sends or receives data from that port.
This is a good page on the differences between TCP and UDP.
To compile these, install Java JDK to your system. Then compile the program with “javac TCPClient.java” - this will create a TCPClient.class. Execute the file with “java TCPClient” - leave off the .class, or you will get the error: “Exception in thread “main” java.lang.NoClassDefFoundError”.
Here is the sample code:
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()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
System.out.println("Received: " + clientSentence);
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
}
}
}
and the client:
TCPClient.java
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("localhost", 6789);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
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();
}
}
If you have any questions, please leave a comment!
« A Simple Java UDP Server and UDP Client | Adding a Module Position in a Joomla 1.5 Template »



Comments
Hi
simply what I needed
Is it possible to add persistence to this example (inserting the data into a Firebird db, the data is in binary format)?
Best regards,
Michel
I wrote my first Java socket client/server application in 1993! So this code looks mighty familiar.
However, servers I’ve written subsequently all implement Thread so you can build a pool of connections available and new ones are spawned as traffic arrives. A small point, but one that makes this code scalable.