Skip to content

Instantly share code, notes, and snippets.

@sewera
Created May 10, 2020 14:09
Show Gist options
  • Save sewera/d85d67f06ae5f0f2e9d3bad0c75ead40 to your computer and use it in GitHub Desktop.
Save sewera/d85d67f06ae5f0f2e9d3bad0c75ead40 to your computer and use it in GitHub Desktop.
SimpleServer – najprostszy serwer w Javie, standardowe biblioteki, dużo komentarzy
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class SimpleServer {
SimpleServer(Socket socket) throws Exception {}
public static void main(String args[]) throws Exception {
// Adres serwera - komputera, na którym serwer chodzi
InetAddress localHost = InetAddress.getLocalHost();
System.out.println("Host address: " + localHost.getHostAddress());
System.out.println("Hostname: " + localHost.getHostName());
// Gniazdo, na którym będzie nasłuchiwał serwer
ServerSocket serverSocket;
// Try/catch, ponieważ może nam się nie udać otwarcie portu,
// np. gdy nie mamy uprawnień
try {
serverSocket = new ServerSocket(21370); // Nr portu
System.out.println("Port: " + serverSocket.getLocalPort());
} catch (Exception e) {
System.err.println("Create server socket: " + e);
return;
}
System.out.println("Quit with Ctrl-C");
// Pętla serwera
while (true) {
try {
// Rozpocznij nasłuch na gnieździe i gdy połączenie przyjdzie,
// zaakceptuj je. Program zatrzymuje się na tej funkcji dopóki
// nie będzie połączenia.
Socket socket = serverSocket.accept();
// Strumień informacji przychodzących na gnieździe
InputStream is = socket.getInputStream();
// Reader strumienia
BufferedReader br = new BufferedReader(new InputStreamReader(is));
// Strumień informacji wysyłanych z gniazda
OutputStream os = socket.getOutputStream();
// Writer informacji na strumień
PrintWriter pw = new PrintWriter(os, true);
// String pobrany ze strumienia od klienta (w sieci nazywany request)
String clientRequest = br.readLine();
System.out.println("Client request: `" + clientRequest + "'");
// Wysłanie do klienta informacji zwrotnej (w sieci nazywany response)
pw.println("Server response: Request was: `" + clientRequest + "'");
// Zamknięcie gniazda
socket.close();
// Zamknięcie strumieni, opcjonalne, ale ładnie zwalnia pamięć, nawyki z C
br.close();
pw.close();
is.close();
os.close();
} catch (Exception e) {
System.err.println("Server exception: " + e);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment