Kommunerne har digitaliseret indgangen for borgerne. Men bag skærmen håndteres mange arbejdsgange stadig manuelt mellem systemer, mails og organisatoriske siloer.
Slettet bruger
19. maj 2004 - 17:47#1
Det er da ikke den komplette kode, eller hvad?
Prøv at beskrive mere præcist hvad du gør, hvilke fejl du får og den slags, så vi har noget at arbejde med.
Jeg tror at din strcpy skal være en sprintf. Det undrer mig at du både har \r\n og /r/n of <cr><lf> i din streng. Så vidt jeg kan se kan det ikke kompileres som det er.
Nej det har du ret i,den komplete kode kommer her:
og af fejlmeldinger får jeg blot,der er ingen kontakt til server. /************************** ** ** simple multi-threaded server ** ** */ #define _REENTRANT #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <pthread.h> #include <unistd.h>
/* the port on which to accept connections */ #define SERVERPORT 12345 /* function prototypes */ void* serverWatch( void* ); void* serveClient( void* ); int main( void ) { pthread_t watcher_thr; pthread_create(&watcher_thr, NULL, serverWatch, (void*)NULL); for(;;) { /* do something useful */ printf( "server is running\n" ); /* pthread_yield(); */ sched_yield(); sleep(1); } } /************* ** ** serverWatch() ** ** watch for a client trying to connect ** ** the argument to the function is not used ** */ void* serverWatch( void* dummy ) { pthread_t dummy_thr; int srv_socket; int accepted_socket; int size; struct sockaddr_in port_addr, accept_addr; int set_opt = 1;
fd_set read_set; int ready_fd; /* set up the socket on the server port */ port_addr.sin_family = AF_INET; port_addr.sin_addr.s_addr = htonl( INADDR_ANY ); port_addr.sin_port = htons( SERVERPORT ); srv_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); setsockopt( srv_socket, SOL_SOCKET, SO_REUSEADDR, (char*)&set_opt, sizeof( set_opt ) ); bind( srv_socket, (struct sockaddr*)&port_addr, sizeof(port_addr)); for(;;) { /* wait for the client to try to connect */ listen( srv_socket, 5 ); FD_ZERO(&read_set); FD_SET( srv_socket, &read_set ); do { ready_fd = select(srv_socket+1, &read_set, NULL, NULL, NULL); } while (ready_fd <= 0 || !FD_ISSET(srv_socket, &read_set) ); /* a client has connected. Accept their connection and create a * thread to serve the client */ size = sizeof( accept_addr ); accepted_socket = accept(srv_socket, (struct sockaddr*)&accept_addr, &size); pthread_create(&dummy_thr, NULL, serveClient, (void*)accepted_socket); } } /************* ** ** serve the client on the specified socket ** */ void* serveClient( void* socket ) { char buffer[256]; for(;;) { strcpy( buffer, "HTTP/1.0 200 OK\r\nDate:Tues, 17 May 19:37:00 GMT\r\nContent-Length: %d\r\nContent-Type:text/html/r/nConnection: Keep-Alive\r\n\r\n%s", <cr><lf><cr><lf><HTML> .tryk X for at stoppe.....<FORM> sdsadlsadlsa <SUBMIT method=post, .............</FORM></HTML>" +'\0'); write( (int)socket, buffer, strlen(buffer) ); if (read( (int)socket, buffer, 255) > 0 ) { if ( buffer[0] == 'X' ) { close( (int)socket ); pthread_exit( NULL ); } } } }
Nej det har du ret i,den komplete kode kommer her:
og af fejlmeldinger får jeg blot,der er ingen kontakt til server. /************************** ** ** simple multi-threaded server ** ** */ #define _REENTRANT #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <pthread.h> #include <unistd.h>
/* the port on which to accept connections */ #define SERVERPORT 12345 /* function prototypes */ void* serverWatch( void* ); void* serveClient( void* ); int main( void ) { pthread_t watcher_thr; pthread_create(&watcher_thr, NULL, serverWatch, (void*)NULL); for(;;) { /* do something useful */ printf( "server is running\n" ); /* pthread_yield(); */ sched_yield(); sleep(1); } } /************* ** ** serverWatch() ** ** watch for a client trying to connect ** ** the argument to the function is not used ** */ void* serverWatch( void* dummy ) { pthread_t dummy_thr; int srv_socket; int accepted_socket; int size; struct sockaddr_in port_addr, accept_addr; int set_opt = 1;
fd_set read_set; int ready_fd; /* set up the socket on the server port */ port_addr.sin_family = AF_INET; port_addr.sin_addr.s_addr = htonl( INADDR_ANY ); port_addr.sin_port = htons( SERVERPORT ); srv_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); setsockopt( srv_socket, SOL_SOCKET, SO_REUSEADDR, (char*)&set_opt, sizeof( set_opt ) ); bind( srv_socket, (struct sockaddr*)&port_addr, sizeof(port_addr)); for(;;) { /* wait for the client to try to connect */ listen( srv_socket, 5 ); FD_ZERO(&read_set); FD_SET( srv_socket, &read_set ); do { ready_fd = select(srv_socket+1, &read_set, NULL, NULL, NULL); } while (ready_fd <= 0 || !FD_ISSET(srv_socket, &read_set) ); /* a client has connected. Accept their connection and create a * thread to serve the client */ size = sizeof( accept_addr ); accepted_socket = accept(srv_socket, (struct sockaddr*)&accept_addr, &size); pthread_create(&dummy_thr, NULL, serveClient, (void*)accepted_socket); } } /************* ** ** serve the client on the specified socket ** */ void* serveClient( void* socket ) { char buffer[256]; for(;;) { strcpy( buffer, "HTTP/1.0 200 OK\r\nDate:Tues, 17 May 19:37:00 GMT\r\nContent-Length: %d\r\nContent-Type:text/html/r/nConnection: Keep-Alive\r\n\r\n%s", <cr><lf><cr><lf><HTML> .tryk X for at stoppe.....<FORM> sdsadlsadlsa <SUBMIT method=post, .............</FORM></HTML>" +'\0'); write( (int)socket, buffer, strlen(buffer) ); if (read( (int)socket, buffer, 255) > 0 ) { if ( buffer[0] == 'X' ) { close( (int)socket ); pthread_exit( NULL ); } } } }
det gør den også, da jeg overhovedet ikke kan forbinde den til serveren, men selvom jeg skriver printf istedet for strcpy og sletter <cr><lf><cr><lf>, virker den stadig ikke.
Synes godt om
Slettet bruger
24. maj 2004 - 12:24#9
Sålænge koden ikke compiler, kan du jo ikke forbinde til nogetsomhelst.
nu har jeg fået kontakt til serveren, men den skal i princippet kun vise den tekst der står i body'en, men den viser også httpheaderen, hvorfor gør den det???
/ void* serveClient( void* s ) { int socket = (int) s;
ved du så om hvordan man laver flere htmldokumenter i http header???
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.