Skip to content

Instantly share code, notes, and snippets.

@takei-shg
Created December 7, 2014 08:36
Show Gist options
  • Save takei-shg/f92f3673afeddebcf38d to your computer and use it in GitHub Desktop.
Save takei-shg/f92f3673afeddebcf38d to your computer and use it in GitHub Desktop.
java echo server
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Created by nanika on 2014/12/07.
*/
public class Server {
int port = 9999;
Thread runThread = new Thread();
public void simpleStart() throws IOException {
ServerSocket serverSocket = new ServerSocket(port);
serverSocket.setReuseAddress(true);
Socket clientSocket = serverSocket.accept();
System.out.println("server accepted");
InputStream in = clientSocket.getInputStream();
OutputStream out = clientSocket.getOutputStream();
int receiveSize = 0;
byte[] bytebuf = new byte[32];
while ((receiveSize = in.read(bytebuf)) != -1) {
out.write(bytebuf, 0, receiveSize);
}
clientSocket.close();
System.out.println("server closed");
}
public void loop() throws IOException {
ServerSocket serverSocket = new ServerSocket(port);
serverSocket.setReuseAddress(true);
for (;;) {
Socket clientSocket = serverSocket.accept();
System.out.println("server accepted");
InputStream in = clientSocket.getInputStream();
OutputStream out = clientSocket.getOutputStream();
int receiveSize = 0;
byte[] bytebuf = new byte[32];
while ((receiveSize = in.read(bytebuf)) != -1) {
out.write(bytebuf, 0, receiveSize);
}
clientSocket.close();
System.out.println("server closed");
}
}
int threadNum = 2;
ExecutorService executor = Executors.newFixedThreadPool(threadNum);
public void multiThread() throws IOException {
ServerSocket serverSocket = new ServerSocket(port);
serverSocket.setReuseAddress(true);
for (;;) {
final Socket clientSocket = serverSocket.accept();
System.out.println("server accepted");
Callable task = new Callable() {
@Override
public Object call() throws Exception {
InputStream in = clientSocket.getInputStream();
OutputStream out = clientSocket.getOutputStream();
int receiveSize = 0;
byte[] bytebuf = new byte[32];
while ((receiveSize = in.read(bytebuf)) != -1) {
out.write(bytebuf, 0, receiveSize);
}
clientSocket.close();
System.out.println("server closed");
return null;
}
};
executor.submit(task);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment