Chat Client using JAVA
Now, we are going to build a project for client.
Make a new project and name this project as ChatClient. Now, go to Main file and right click on it. Go to Refactor, then go to Rename and rename the file as ChatClient and write the following code in it.
ChatClient.java :
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
public class ChatClient {
static String serverAddress = "localhost";
public String userName;
void setUserName(String userName) { this.userName = userName; }
String getUserName() { return this.userName; }
public ChatClient() {
try {
Socket socket = new Socket(serverAddress, 6666);
System.out.println("Connected to the chat Server!");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("\nEnter your name : ");
userName = bufferedReader.readLine();
System.out.println("Your name is : " + userName);
new ReadThread(socket, this).start();
new WriteThread(socket, this).start();
} catch (UnknownHostException ex) {
System.out.println("Server not found : " + ex.getMessage());
} catch (IOException ex) {
System.out.println("I/O Error : " + ex.getMessage());
}
}
public static void main(String[] args) { new ChatClient(); }
}
Now, go to Projects tab.
Right Click on src folder, go to New and Click on JAVA Class.
Name the new JAVA Class as ReadThread.java
Write the following code in ReadThread.java.
ReadThread.java :
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
public class ReadThread extends Thread{
private BufferedReader reader;
private Socket socket;
private ChatClient chatClient;
public ReadThread(Socket socket, ChatClient chatClient) {
this.socket = socket;
try {
String msgFromServer;
InputStream inputStream = socket.getInputStream();
reader = new BufferedReader(new InputStreamReader(inputStream));
} catch (IOException ex) {
System.out.println("Error getting input stream : " + ex.getMessage());
ex.printStackTrace();
}
}
public void run() {
while (true) {
try {
String response = reader.readLine();
System.out.println("\n" + response);
} catch (IOException ex) {
System.out.println("Error reading from the server : " + ex.getMessage());
break;
}
}
}
}
Now, go to Projects tab.
Right Click on src folder, go to New and Click on JAVA Class.
Name the new JAVA Class as WriteThread.java
Write the following code in WriteThread.java.
WriteThread.java :
import java.net.Socket;
public class WriteThread extends Thread{
private Socket socket;
String text;
public WriteThread(Socket socket, ChatClient chatClient) {
this.socket = socket;
try {
OutputStream outputStream = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream, true);
printWriter.println(chatClient.userName);
do {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
text = bufferedReader.readLine();
printWriter.println(text);
} while (!text.equals("bye"));
try {
socket.close();
} catch (IOException ex) {
System.out.println("Error writing to the server : " + ex.getMessage());
}
} catch (IOException ex) {
System.out.println("Error getting output stream : " + ex.getMessage());
ex.printStackTrace();
}
}
}
Your project is now complete.
Run ChatServer and two instances of ChatClient. When you message form one client, your message is delivered to another client.