Unix Webserver mit HTML Seite erstellen

S

Speedcore016

Grünschnabel
Hallo!

Ich habe erst vor kurzem begonnen mich mit dem Thema der Netzwerkprogrammierung auseinander zusetzen, und habe probiert einen simplen Webserver aufzusetzen ( Das klappt sogar) und mich über telnet darauf anzuwählen.

Nun würde ich gerne über den Browser auf diesen Server zugreifen um mir eine HTML Seite anzeigen zu lassen. Nur finde ich keine Tutorials oder ähnliches hierzu. Ich würde auch gerne später über gewisse Befehle in der Kommandozeile (Sobald man am Server eingewählt ist) Elemente auf die HTML Seite hinzufügen, falls das möglich ist.

Kann mir jemand hier helfen ?
LG

Der derzeigtige Code den ich gerade benutze (Nicht von mir selbst!)

Code:
/* server.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <unistd.h>

/* Portnummer */
#define PORT 1234

/* Puffer für eingehende Nachrichten */
#define RCVBUFSIZE 1024

static void echo( int );

static void error_exit(char *errorMessage);

/* Die Funktion gibt Daten vom Client auf stdout aus,
 * die dieser mit der Kommandozeile übergibt. */
static void echo(int client_socket)

{
    char echo_buffer[RCVBUFSIZE];
    int recv_size;
    time_t zeit;
    char test[5] = {"b"};
    if((recv_size = recv(client_socket, echo_buffer, RCVBUFSIZE,0)) < 0)
        error_exit("Fehler bei recv()");
    echo_buffer[recv_size] = '\0';
    time(&zeit);
    printf("Nachrichten vom Client : %s %s",echo_buffer, ctime(&zeit));
    if(strcmp(echo_buffer,"bbs")== 0){
        printf("GLEICH");
    }
}

/* Die Funktion gibt den aufgetretenen Fehler aus und
 * beendet die Anwendung. */
static void error_exit(char *error_message) {
    fprintf(stderr, "%s: %s\n", error_message, strerror(errno));
    exit(EXIT_FAILURE);
}

int main( int argc, char *argv[]) {
    struct sockaddr_in server, client;
    int sock, fd;
    unsigned int len;
    /* Erzeuge das Socket. */
    sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (sock < 0)
        error_exit("Fehler beim Anlegen eines Sockets");

    /* Erzeuge die Socketadresse des Servers. */
    memset( &server, 0, sizeof (server));
    /* IPv4-Verbindung */
    server.sin_family = AF_INET;
    /* INADDR_ANY: jede IP-Adresse annehmen */
    server.sin_addr.s_addr = htonl(INADDR_ANY);
    /* Portnummer */
    server.sin_port = htons(PORT);
    /* Erzeuge die Bindung an die Serveradresse (genauer: an einen bestimmten Port). */
    if(bind(sock,(struct sockaddr*)&server, sizeof( server)) < 0)
        error_exit("Kann das Socket nicht \"binden\"");

    /* Teile dem Socket mit, dass Verbindungswünsche von Clients entgegengenommen werden. */
    if(listen(sock, 5) == -1 )
        error_exit("Fehler bei listen");
    
    printf("Server bereit - wartet auf Anfragen ...\n");
    /* Bearbeite die Verbindungswünsche von Clients in einer Endlosschleife.
    Der Aufruf von accept() blockiert so lange, bis ein Client Verbindung aufnimmt. */
    for(;;) {
        len = sizeof(client);
        fd = accept(sock, (struct sockaddr*)&client, &len);
        if (fd < 0)
            error_exit("Fehler bei accept");
        printf("Bearbeite den Client mit der Adresse: %s\n",
        inet_ntoa(client.sin_addr));
        /* Daten vom Client auf dem Bildschirm ausgeben */
        echo( fd );
        printf("HIER DA");
        /* Schließe die Verbindung. */
        close(fd);
    }
    return EXIT_SUCCESS;
}
 
Ich fürchte, deine Programmierer-Hausaufgaben (also Code schreiben, Bibliotheken nutzen, ...) musst Du schon selbst lernen und machen.

https://www.google.de/search?q=c+webserver+example ist jedenfalls der Meinung, daß man das auch durchaus schaffen kann - vielleicht hilft Dir ja der, der das obige "Ding" programmiert hat...
 
Ja da hast du Recht.

Ich hätte noch eine Frage.
Würde es gehen, dass wenn ich auf meinen Webserver eingewählt bin und einfach in den Terminal einen String hineinschreibe und diesen auf Gültigkeit überprüfe, um daraus bei positiver Überprüfung eine Funktion zu starten, die irgendetwas machen würde ?
 
Hättest du vielleicht irgendwo einen Link oder so rumliegen wo das erklärt wird ^^ =) ? Weil ich hab schon Google durchsucht nach sowas aber nichts gefunden ^^
 
???

Programmieren kannst Du aber? Weil nichts anderes ist das...
(Dein Webserver hört auf irgendeinen Port, da kommt irgendwas "rein", diese Eingabe prüfst Du und je nach Ergebnis der Prüfung passiert dann irgendwas...)
 

Ähnliche Themen

Server und Client für TCP und UDP

C HTTP request

CentOS 6.3 RADIUS - Keine Verbindung möglich

USB Geräte per Bash Script resetten (Gerät hängt sich öfter mal auf)

dovecot und postfix Konfiguration Problem

Zurück
Oben