0% found this document useful (0 votes)
33 views5 pages

33 Jess Exp7

The document describes an experiment on socket programming using TCP in Java. It discusses the concepts of socket programming and provides code for a chat application with client and server code. The lab exercise involves implementing a chat application using TCP sockets in Java.

Uploaded by

jessjohn2209
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views5 pages

33 Jess Exp7

The document describes an experiment on socket programming using TCP in Java. It discusses the concepts of socket programming and provides code for a chat application with client and server code. The lab exercise involves implementing a chat application using TCP sockets in Java.

Uploaded by

jessjohn2209
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

EXPERIMENT NO.

SEMESTER: V DATE OF PERFORMANCE: 06.09.2023


SUBJECT: CN LAB DATE OF SUBMISSION: 23.09.2023
NAME OF THE STUDENT: Jess John ROLL NO: 33

AIM Socket Programming using TCP


LEARNING Students will be able to able to develop a chat application using TCP protocols.
OBJECTIVE
LEARNING The students will be able to write client server chat application program using TCP.
OUTCOME
COURSE CSL502.4: Illustrate socket programming for TCP/UDP connections for
OUTCOME demonstrating networking concepts
PROGRAM PO1,PO2,PO3,PO4,PO5,PO9,PO10,PSO1,PSO2,PSO3
OUTCOME
BLOOM'S Analyze
TAXONOMY
LEVEL
THEORY Java Socket Programming
 Java Socket programming is used for communication between the applications
running on different JRE.
 Java Socket programming can be connection-oriented or connection-less.
 Socket and ServerSocket classes are used for connection-oriented socket
programming and DatagramSocket and DatagramPacket classes are used for
connection-less socket programming.

The client in socket programming must know two information:


a. IP Address of Server, and
b. Port number.

Here, we are going to make one-way client and server communication. In this
application, client sends a message to the server, server reads the message and prints it.
Here, two classes are being used: Socket and ServerSocket. The Socket class is used to
communicate client and server. Through this class, we can read and write message. The
ServerSocket class is used at server-side. 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.

#Socket class
A socket is simply an endpoint for communications between the machines. The Socket
class can be used to create a socket.

#ServerSocket class
The ServerSocket class can be used to create a server socket. This object is used to
establish communication with the clients.

Creating Server:
To create the server application, we need to create the instance of ServerSocket class.
Here, we are using 6666 port number for the communication between the client and
server. You may also choose any other port number. The accept() method waits for the
client. If clients connects with the given port number, it returns an instance of Socket.
ServerSocket ss=new ServerSocket(6666);
Socket s=ss.accept();//establishes connection and waits for the client

Creating Client:
To create the client application, we need to create the instance of Socket class. Here, we
need to pass the IP address or hostname of the Server and a port number. Here, we are
using "localhost" because our server is running on same system.
Socket s=new Socket("localhost",6666);

Output:
To execute this program open two command prompts and execute each program at each
command prompt as displayed in the below figures.
First run Myserver.java file in terminal/cmd,

Running MyServer.java
Then in new terminal/cmd run MyClient.java file,

Running MyClient.java
As soon as you run MyClient program a message is sent to server
and displayed in MyServer Terminal/CMD as shown below,

Message displayed in MyServer after running MyClient


LAB  Write a program to build chat application using SOCKET programming (TCP).
EXERCISE
Client Side Code:
import java.io.*;
import java.net.*;
import java.util.Scanner;

public class ChatClient {


private static final String SERVER_ADDRESS = "127.0.0.1";
private static final int SERVER_PORT = 12345;

public static void main(String[] args) {


try (Socket socket = new Socket(SERVER_ADDRESS, SERVER_PORT);
PrintWriter out = new
PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
Scanner scanner = new Scanner(System.in)) {

Thread receiveThread = new Thread(() -> {


String message;
try {
while ((message = in.readLine()) != null) {
System.out.println(message);
}
} catch (IOException e) {
e.printStackTrace();
}
});
receiveThread.start();

while (true) {
String messageToSend = scanner.nextLine();
out.println(messageToSend);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

Server Side Code:


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

public class ChatServer {


private static final int PORT = 12345;
private static List<ClientHandler> clientHandlers = new ArrayList<>();
public static void main(String[] args) {
try (ServerSocket serverSocket = new ServerSocket(PORT)) {
System.out.println("Server is listening for incoming
connections...");
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("Connection established with " +
clientSocket.getInetAddress());

ClientHandler clientHandler = new


ClientHandler(clientSocket);
clientHandlers.add(clientHandler);

Thread clientThread = new Thread(clientHandler);


clientThread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}

private static class ClientHandler implements Runnable {


private Socket clientSocket;
private PrintWriter out;

public ClientHandler(Socket socket) {


this.clientSocket = socket;
try {
this.out = new PrintWriter(clientSocket.getOutputStream(),
true);
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public void run() {
try (BufferedReader in = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()))) {
String message;
while ((message = in.readLine()) != null) {
System.out.println("Received: " + message);
broadcast(message);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
clientHandlers.remove(this);
try {
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

private void broadcast(String message) {


for (ClientHandler handler : clientHandlers) {
if (handler != this) {
handler.sendMessage(message);
}
}
}

public void sendMessage(String message) {


out.println(message);
}
}
}

Output:

REFERENC  B.A. Forouzan, “Data Communications and Networking”, TMH, Fourth Edition.
ES  https://www.tutorialspoint.com/unix_sockets/what_is_socket.htm
 https://www.geeksforgeeks.org/socket-programming-in-java/
 https://www.youtube.com/watch?v=UaM1JmQliTs

You might also like