Skip to content

Instantly share code, notes, and snippets.

@Korilakkuma
Last active August 29, 2015 14:06
Show Gist options
  • Select an option

  • Save Korilakkuma/6ca99287e3a3df3467b4 to your computer and use it in GitHub Desktop.

Select an option

Save Korilakkuma/6ca99287e3a3df3467b4 to your computer and use it in GitHub Desktop.
Chat Server
import java.util.*;
import java.io.*;
import java.net.*;
public final class ChatServer {
private static final int LISTEN_PORT = 9999;
private static final String TERMINAL_MESSAGE = "quit";
private static final int BUFFER_SIZE = 4096;
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket clientSocket = null;
try {
serverSocket = new ServerSocket(ChatServer.LISTEN_PORT);
System.out.println("Listen (" + ChatServer.LISTEN_PORT + ") ...");
clientSocket = serverSocket.accept();
while (true) {
Reader input = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
Writer output = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
//for Receive Message
StringBuilder sb = new StringBuilder(ChatServer.BUFFER_SIZE);
System.out.println("Waiting ...");
int c = 0;
while ((c = input.read()) != -1 ) {
if (c == '\n') {
break;
}
sb.append((char)c);
}
if (sb.toString().trim().toLowerCase().equals(ChatServer.TERMINAL_MESSAGE) || sb.toString().trim().equals("")) {
System.out.println("Quit Chat. Good Bye !!");
break;
} else {
System.out.println("Receive Message >> " + sb.toString());
}
System.out.print("Send Message >> ");
Reader stdin = new BufferedReader(new InputStreamReader(System.in));
char[] buffer = new char[ChatServer.BUFFER_SIZE];
while (stdin.read(buffer) != -1) {
//Send
output.write(buffer);
String message = String.valueOf(buffer); //String message = new String(buffer, 'UTF-8');
if (message.trim().toLowerCase().equals(ChatServer.TERMINAL_MESSAGE)) {
System.out.println("Quit Chat. Good Bye !!");
System.exit(0);
} else if (message.indexOf("\n") != -1) {
break;
}
}
output.write('\n');
output.flush();
}
} catch (SocketTimeoutException error) {
System.err.println("TIMEOUT");
error.printStackTrace();
} catch (IOException error) {
error.printStackTrace();
} finally {
try {
if (clientSocket != null) {clientSocket.close();}
if (serverSocket != null) {serverSocket.close();}
} catch (IOException error) {
error.printStackTrace();
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment