/*******************************************************************************/ /* ________________________________________ */ /* / WARNUNG: Das ist keine Vorlage, es \ */ /* | handelt sich hier nur um den Stand der | */ /* | Datei am Ende von der Übung. In diesem | */ /* | Programm könnten eine Vielzahl von | */ /* | Fehlern und Fallen verborgen liegen, | */ /* | welche man nicht in seiner Abgabe | */ /* \ übernehmen will! / */ /* ---------------------------------------- */ /* \ / \ //\ */ /* \ |\___/| / \// \\ */ /* /0 0 \__ / // | \ \ */ /* / / \/_/ // | \ \ */ /* @_^_@'/ \/_ // | \ \ */ /* //_^_/ \/_ // | \ \ */ /* ( //) | \/// | \ \ */ /* ( / /) _|_ / ) // | \ _\ */ /* ( // /) '/,_ _ _/ ( ; -. | _ _\.-~ .-~~~^-. */ /* (( / / )) ,-{ _ `-.|.-~-. .~ `. */ /* (( // / )) '/\ / ~-. _ .-~ .-~^-. \ */ /* (( /// )) `. { } / \ \ */ /* (( / )) .----~-.\ \-' .~ \ `. \^-. */ /* ///.----..> \ _ -~ `. ^-` ^-_ */ /* ///-._ _ _ _ _ _ _}^ - - - - ~ ~-- ,.-~ */ /* /.-~ */ /*******************************************************************************/ #include #include #include #include #include #include #include /* Ziel: Ein Server zu schreiben, welches synchron Verbindungen * annimmt, um eine "aufwendige Berechnung" berechnen. */ int main() { int sock = socket(AF_INET6, SOCK_STREAM, 0); struct sockaddr_in6 addr = { .sin6_family = AF_INET6, .sin6_port = htons(9876), .sin6_addr = in6addr_any, }; bind(sock, (struct sockaddr*)&addr, sizeof addr); listen(sock, SOMAXCONN); for (;;) { int conn = accept(sock, NULL, NULL); double x; FILE *rx = fdopen(conn, "r"); fscanf(rx, "%lf", &x); dprintf(conn, "x = %lf\n", x); int i = 100000; while (i --> 0) { x = tan(x); } dprintf(conn, "f(x) = %lf\n", x); close(conn); } return 0; }