0% found this document useful (0 votes)
14 views

Project Code

The document contains code for a server and client for a socket-based messaging application. The server code creates a server socket listening on port 8880, accepts client connections, and uses threads to handle reading/writing messages simultaneously. The client code connects to the server, reads/writes messages in threads, and closes the connection. Both use BufferedReaders and PrintWriters to asynchronously read and write messages over the socket connection.
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)
14 views

Project Code

The document contains code for a server and client for a socket-based messaging application. The server code creates a server socket listening on port 8880, accepts client connections, and uses threads to handle reading/writing messages simultaneously. The client code connects to the server, reads/writes messages in threads, and closes the connection. Both use BufferedReaders and PrintWriters to asynchronously read and write messages over the socket connection.
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/ 4

Server Code

package socket;

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

public class Server {


private ServerSocket serverSocket;
private Socket clientSocket;
private BufferedReader socketReader;
private PrintWriter socketWriter;

public static void main(String[] args) {


new Server().start();
}

public void start() {


try {
serverSocket = new ServerSocket(8880);
System.out.println("Waiting for incoming connections");

clientSocket = serverSocket.accept();
System.out.println("Client connected");

socketReader = new BufferedReader(new


InputStreamReader(clientSocket.getInputStream()));
socketWriter = new PrintWriter(clientSocket.getOutputStream(), true);

new Thread(new ClientMessageHandler()).start();

Scanner scanner = new Scanner(System.in);


String message;
while (true) {
message = scanner.nextLine();
socketWriter.println(message);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
closeServer();
}
}

public void closeServer() {


try {
socketReader.close();
socketWriter.close();
clientSocket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}

private class ClientMessageHandler implements Runnable {


public void run() {
try {
String message;
while ((message = socketReader.readLine()) != null) {
System.out.println(message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Client Code:
package socket;

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

public class Client {


private Socket socket;
private BufferedReader socketReader;
private PrintWriter socketWriter;

public static void main(String[] args) {


new Client().start();
}

public void start() {


try {
socket = new Socket("localhost", 8880);
System.out.println("Connecting to the server");

socketReader = new BufferedReader(new


InputStreamReader(socket.getInputStream()));
socketWriter = new PrintWriter(socket.getOutputStream(), true);

new Thread(new ServerMessageHandler()).start();

Scanner scanner = new Scanner(System.in);


String message;
while (true) {
message = scanner.nextLine();
socketWriter.println("client: " + message);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
closeClient();
}
}

public void closeClient() {


try {
socketReader.close();
socketWriter.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}

private class ServerMessageHandler implements Runnable {


public void run() {
try {
String message;
while ((message = socketReader.readLine()) != null) {
System.out.println("server: " + message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

You might also like