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!
Tagged: code, Code Samples, java, networking, tcp

1 Trackbacks
You can leave a trackback using this URL: http://systembash.com/content/a-simple-java-tcp-server-and-tcp-client/trackback/
New blog post: A Simple Java TCP Server and TCP Client http://tinyurl.com/3vt9×9
9 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.
Hi, Congratulations to the site owner for this marvelous work you’ve done. It has lots of useful and interesting data.
you forgot
import java.net.Socket;
and
public static void main(String[] args) throws IOException {
anyway, thanks, exactly what I needed
Hi, there are nice work for a simple and easy understand server client example.
However, I have some question which is:
what is the use of ‘\n’ in
outToServer.writeBytes(sentence + ‘\n’);
i try to remove it and the program won’t work. Can you please do simple explain to me?
Thanks
Vince
@vince: \n stands for new line. This lets the TCP Server know that your sentence has been sent. Let me know if you have any other questions.
i need java code that display the area of a circle using TCP server and TCPclient
The Java Tutorials are practical guides for programmers who want to use the Java programming language to create applications.
HI,,,,
I have cpyied the TCPClient code on my pc
and the TCPServer code on another pc but nothing happened
“there is no error”.
please reply