Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re^2: Decode perl cgi response in C

by stenasc (Novice)
on Jul 22, 2013 at 08:25 UTC ( #1045614=note: print w/ replies, xml ) Need Help??

in reply to Re: Decode perl cgi response in C
in thread Decode perl cgi response in C

Yes, I have write some C TCP/UDP web clients and servers in the past and I don't have an issue there. What I have is an embedded system, that needs to process the test output from a cgi file. I hust need a little info on the way to decode this data. I send a post command to the cgi file on the server and wait for a response. Instead of the desired test response, which should be "Hello", I receive the text responses "Download" and "OK". I will read up on cURL to find out the details on the ports so I can decode the text.

Comment on Re^2: Decode perl cgi response in C
Replies are listed 'Best First'.
Re^3: Decode perl cgi response in C
by samwyse (Scribe) on Jul 24, 2013 at 14:20 UTC
    I get the feeling that you want help on the HTTP protocol. If you don't have (or can't use) any libraries to help, a minimal method would be to open a TCP connection and send a request message, which consists of the following:
    • A request line, for example GET /images/logo.png HTTP/1.1, which requests a resource called /images/logo.png from the server.
    • Request Headers, such as Accept-Language: en
    • An empty line.
    • An optional message body.
    The request line and headers must all end with <CR><LF> (that is, a carriage return character followed by a line feed character). The empty line must consist of only <CR><LF> and no other whitespace. In the HTTP/1.1 protocol, all headers except Host are optional (but in practice, it's also optional if there's only one name associated with the IP address). A request line containing only the path name is accepted by servers to maintain compatibility with HTTP clients before the HTTP/1.0 specification.

    You will then be able to read the response message, which consists of the following:

    • A Status-Line (for example HTTP/1.1 200 OK, which indicates that the client's request succeeded)
    • Zero of more Response Headers, such as Content-Type
    • An empty line
    • An optional message body
    The Status-Line and headers must all end with <CR><LF> (a carriage return followed by a line feed). The empty line must consist of only <CR><LF> and no other whitespace.

    On my computer, entering the command "telnet 80" returns the message "Connecting To". If I then enter the command "GET / HTTP/1.1" and hit the <Enter> key twice, I get the following:

    HTTP/1.1 200 OK Via: 1.1 ETC-USRPXY-02 Connection: Keep-Alive Proxy-Connection: Keep-Alive Content-Length: 47589 Date: Wed, 24 Jul 2013 14:08:33 GMT Age: 74 Content-Type: text/html ETag: "b9e5-4e24268fd6b00" Server: Apache/2.2.24 Accept-Ranges: bytes Last-Modified: Wed, 24 Jul 2013 14:06:04 GMT <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html xmlns="" xml:lang="en"> <head>
    ... followed by roughly 47 KB of other data. You can experiment by using telnet to connect to your server and see what you get back.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1045614]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (4)
As of 2015-11-27 03:24 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (717 votes), past polls