Skip to content

Instantly share code, notes, and snippets.

@hoshi-takanori
Created February 21, 2018 08:14
Show Gist options
  • Save hoshi-takanori/75bd1822471e09d07e2bdf7ee1003d43 to your computer and use it in GitHub Desktop.
Save hoshi-takanori/75bd1822471e09d07e2bdf7ee1003d43 to your computer and use it in GitHub Desktop.
Simple chat server in Java.
import java.io.*;
import java.net.*;
import java.util.*;
public class Chat implements Runnable {
private static ArrayList<Chat> users = new ArrayList<>();
private Socket socket;
private PrintStream writer;
private String name;
public Chat(Socket socket) {
this.socket = socket;
}
public void run() {
try {
users.add(this);
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new PrintStream(socket.getOutputStream(), false, "UTF-8");
writer.println("Welcome to chat! What's your name?");
String line = reader.readLine();
if (line != null && line.length() > 0) {
name = line;
broadcast("user " + name + " joined.");
while ((line = reader.readLine()) != null) {
broadcast(name + " : " + line);
}
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
users.remove(this);
}
}
public static void broadcast(String message) {
for (Chat user : users) {
if (user.name != null) {
user.writer.println(message);
}
}
}
public static void main(String[] args) {
try {
ServerSocket listener = new ServerSocket(9000);
while (true) {
Socket socket = listener.accept();
Chat chat = new Chat(socket);
new Thread(chat).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment