Startertutorials Blog
Tutorials and articles related to programming, computer science, technology and others.
Subscribe to Startertutorials.com's YouTube channel for different tutorial and lecture videos.

Categories: DCCN Lab. No Comments on DCCN lab program – To implement client-server communication using socket programming
0
(0)

Aim

To implement client-server communication using socket programming.

 

S/W required

Java


Subscribe to our monthly newsletter. Get notified about latest articles, offers and contests.


 

Background information

Client-Server communication model

One of the widely used way of communication across the Internet is the client-server communication. In this communication model, there is a system called server which always listens for connections from clients. Once a connection has been established, the server receives the requests from client and processes them.

 

On the other hand, a client is a system that can connect to a server when needed and sends requests to it. A request can be to access a file, data in a database, or some other resource that the server can provide.

 

Socket and port

A port is a point of communication. A PC or laptop has a total of 65,535 ports among which top 1024 ports are called as well-defined ports. These 1024 ports are used by different protocols for communication. For example, port 80 is the default port for HTTP. Every application which communicates with other applications across the Internet uses a port.

 

A socket is a combination of the IP address and a port. Generally, for developing a client-server application, we need to establish a connection through sockets for the purpose of communication.

 

Java socket programming

Java socket programming is used for allowing communication between applications running on JRE which are on different systems. Java’s socket programming can be connection-oriented or connectionless.

 

Socket and ServerSocket classes are used for connection-oriented socket programming and DatagramSocket and DatagramPacket classes are used for connectionless socket programming. Majority of the socket programming related classes are available in java.net package.

 

The server binds and listens to a port for connections from the clients. The accept() method of ServerSocket class blocks the console until the client is connected. After the successful connection of client, it returns the instance of Socket at server-side. The general process of client-server communication is as shown in the below figure:

client server socket communication

 

Activity

Java Program

server.java

import java.net.*;
import java.io.*;
class NewServer
{
	public static void main(String[] args) throws Exception
	{
		ServerSocket ss = new ServerSocket(6000);
		Socket s = ss.accept();
		DataInputStream dis = new DataInputStream(s.getInputStream());
		DataOutputStream dos = new DataOutputStream(s.getOutputStream());
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String stream="";
		String input="";
		while(!stream.equals("stop"))
		{
			stream = dis.readUTF();
			System.out.println("Client: " + stream);
			input = br.readLine();
			dos.writeUTF(input);
			dos.flush();
		}
		dis.close();
		dos.close();
		s.close();
		ss.close();
	}
}

 

client.java

import java.net.*;
import java.io.*;

class NewClient
{
	public static void main(String[] args) throws Exception
	{
		Socket s = new Socket("localhost", 6000);
		DataInputStream dis = new DataInputStream(s.getInputStream());
		DataOutputStream dos = new DataOutputStream(s.getOutputStream());
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String stream="";
		String input="";
		while(!stream.equals("stop"))
		{
			input = br.readLine();
			dos.writeUTF(input);
			dos.flush();
			stream = dis.readUTF();
			System.out.println("Server: " + stream);
		}
		dis.close();
		dos.close();
		s.close();
	}
}

 

Input and output

client server socket communication input output

 

Result

Concepts of socket programming were understood and implemented successfully.

How useful was this post?

Click on a star to rate it!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Suryateja Pericherla

Suryateja Pericherla, at present is a Research Scholar (full-time Ph.D.) in the Dept. of Computer Science & Systems Engineering at Andhra University, Visakhapatnam. Previously worked as an Associate Professor in the Dept. of CSE at Vishnu Institute of Technology, India.

He has 11+ years of teaching experience and is an individual researcher whose research interests are Cloud Computing, Internet of Things, Computer Security, Network Security and Blockchain.

He is a member of professional societies like IEEE, ACM, CSI and ISCA. He published several research papers which are indexed by SCIE, WoS, Scopus, Springer and others.

Leave a Reply

Your email address will not be published. Required fields are marked *