in reply to local webserver for CGI on linux

Better yet, why don't you write your own OS to run for your server :) With all the web servers available (apache, mini_httpd, appWeb, etc, etc, etc), why would you even consider writing your own? What you choose should depend on your requirements. Was there a perl question in there somewhere?

Replies are listed 'Best First'.
Re^2: local webserver for CGI on linux
by my_nihilist (Sexton) on Sep 19, 2008 at 18:17 UTC
    Was there a perl question in there somewhere?

    By "write" I meant "in perl". Consider it a learning experience. Also, all I need is something that will run scripts from a cgi-bin locally based on a singular, established connection. Having never used apache, I figured that by the time I understand it I could have written something to do this (in perl).

    This is what I have so far based on various examples:
    #!/usr/bin/perl -w use strict; # simple server use Socket; use IO::Handle; socket(SERV, PF_UNIX, SOCK_STREAM,0); unlink "/tmp/testsock"; bind(SERV,sockaddr_un("/tmp/testsock")) or print "ERROR!"; listen(SERV,1); while (accept(CLIENT,SERV)) { CLIENT->autoflush(1); print CLIENT "Hi there!\n"; my $answer = <CLIENT>; print $answer; }
    and
    #!/usr/bin/perl -w use strict; # simple client use Socket; use IO::Handle; socket(TSOCK, PF_UNIX, SOCK_STREAM,0); connect(TSOCK, sockaddr_un("/tmp/testsock")) or print("ERROR!"); while (defined(my $messg = <TSOCK>)) { print $messg; print TSOCK "Hello server!"; TSOCK->flush; }
    This works to the point where the server should recieve and print the answer from the client -- it doesn't. The initial "Hi there!" is recieved and printed tho. Once I can get back and forth communication working, I should be able to figure out what to do next.

    Being kind of a luddite, I preferred not to use IO::Socket for the learning experiment.
      Having never used apache, I figured that by the time I understand it I could have written something to do this (in perl).

      Reading and understanding enough of RFC 2616 (for example) to implement your own web server effectively will take more time than installing and configuring Apache httpd through XAMPP or any decent modern free Unix-like system.

      This is not a web-server. It's just socket communication. Your program probably does not work because there is no linefeed in the "Hello server!". Even though you flushed, your server-side read is looking for the linefeed.

      If your communication is across systems, look at inetd/xinetd. There is plenty of documentation on them, and they are very easy to use.