Sponsored Content
Top Forums Programming Sending and Receiving data between Client, HTTP Proxy, and Remote Server Post 302639977 by shubham92 on Sunday 13th of May 2012 11:36:17 PM
Old 05-14-2012
Sending and Receiving data between Client, HTTP Proxy, and Remote Server

I am having problems receiving data from a remote server. It seems that I can send an HTTP request to any host such as http://www.google.com, but I can't get a reply.
I'm sending the host a HTTP 1.0 request that is formatted as such:

GET / HTTP/1.0
Host: http://www.google.com
Connection: close

Here are is part of the proxy code:

Code:
        //Parse Request Buffer
        HttpRequest req;
        req.ParseRequest(request.c_str(), request.length());

        //Format Data to be Sent:
        req.AddHeader ("Connection", "close");  // add connection close headers
        req.SetVersion ("1.0");                 // set http 1.0 flag
        char *requestBuf = new char [req.GetTotalLength()];
        req.FormatRequest(requestBuf);

        //Get host IP by name
        struct hostent *host;
        host = gethostbyname(req.GetHost().c_str());

        //Setup remote address structure
        struct sockaddr_in remoteAddr;
        remoteAddr.sin_family = AF_INET;	 
        remoteAddr.sin_port = htons(req.GetPort());   
        remoteAddr.sin_addr = *((struct in_addr *)host->h_addr);

        //create new socket for remote server
        int remoteSock = socket(AF_INET, SOCK_STREAM, 0);
        if(remoteSock < 0)
        {
                perror("Socket Error");
                //return -1;
        }

        //connecting to remote server
        if(connect(remoteSock, (struct sockaddr *)&remoteAddr, sizeof(remoteAddr)) < 0)
        {
                perror("Connect Error");
                //return -1;
        }

        cout.flush() << requestBuf << endl;
        //send request to remote server
        if(send(remoteSock, requestBuf, sizeof(requestBuf), 0) < 0)
        {
                perror("Write Error");
                //return -1;
        }

        //receive reply from server
        char *recBuf = new char [1024];
        int bufSize = 1024;
        int readSize;
        
        while(1)
        {
                readSize = read(remoteSock, recBuf, bufSize);   //Read from Remote Server
                cout.flush() << recBuf << endl;
                if(readSize <= 0)       //If the requestBuf not filled, nothing left to send to client
                        break;
                write(clientSock, recBuf, readSize);            //write reply to Client

        }

        close(remoteSock);

The cout.flush() of recBuf outputs nothing.<br>
Any ideas on whats going on?
 

9 More Discussions You Might Find Interesting

1. Programming

sending file from server to client

hi dear i m very new to socket programing . i need the source code which sends file from server to client . i mean both server n client programe which sends file . can u do this for me please my email id is email id removed regards bilal (1 Reply)
Discussion started by: bilal
1 Replies

2. Shell Programming and Scripting

Proxy server/client in Perl

I have been toying with a Proxy client/server app that will listen on the CLIENT system on lets say port 7070. User's browser proxy setting is configured for "localhost" port "7070". When this proxy app gets a request for a URL it should FETCH the URL and display it on the browser. I... (1 Reply)
Discussion started by: Dabheeruz
1 Replies

3. UNIX for Dummies Questions & Answers

Is it possible for a server to be both a remote and client SSH host?

Hi, Not sure if this is possible, I have a server (SERVER1) that is currently set up as a remote SSH host. My client SSH host (SERVER2) is connecting to SERVER1 to scp a file with no password. I now have a need to set up a third server (SERVER3) as a remote SSH host and I need SERVER1 as a... (4 Replies)
Discussion started by: tatchel
4 Replies

4. IP Networking

UDP Server/Daemon for receiving & acknowledging data

I'm looking for a couple high level pointers to writing a UDP server that will be acknowledging data at a rate of approximately twelve packets every second and will be running on and older but more or less dedicated Solaris 9 box. Acknowledging the data packets is relatively simple, after... (2 Replies)
Discussion started by: allbread
2 Replies

5. UNIX for Dummies Questions & Answers

Sending commands to a remote server

Hi I have managed to connect to a remote server via ssh, but nothing will actually send through to the remote server screen through my script...it waits until i am back to the main terminal before it outputs anything. Can anyone tell me how to get commands to send through to the remote server?... (4 Replies)
Discussion started by: Hopper_no1
4 Replies

6. Programming

sending http url through http socket programming..

hi am senthil am developing a software to send and receive SMS using HTTP connection first of all am forming a URL and sending that URL to a remote server using my Client Program i send that url through Socket(using Send() Function) if i send more than one URL one by one using the same... (0 Replies)
Discussion started by: senkerth
0 Replies

7. Shell Programming and Scripting

sending http url through http socket programming..

hi am senthil am developing a software to send and receive SMS using HTTP connection first of all am forming a URL and sending that URL to a remote server using my Client Program i send that url through Socket(using Send() Function) if i send more than one URL one by one using the same... (4 Replies)
Discussion started by: senkerth
4 Replies

8. Shell Programming and Scripting

SIMPLE HTTP PROXY SERVER CHECKER (Completed)

Simple Http Proxy Server Checker Script with curl mirror proxies-scripts/proxc at master * Anoncheg1/proxies-scripts * GitHub output in terminal HTTP, HTTP Connect (HTTPS not supported) command line: proxc filename where filename is file like 119.110.69.185:8080 119.235.16.41:8080... (4 Replies)
Discussion started by: 654321
4 Replies

9. IP Networking

Ssh to remote access point http server

I need to do some remote administration to an access point that is sitting behind a firewall that only has ssh enable from the outside but http/https from the inside. So to be a bit clearer: remote(outside firewall) ssh --> ssh-server(internal) --> access point(http/https) Ultimately... (3 Replies)
Discussion started by: metallica1973
3 Replies
Mojo::Message::Request(3pm)				User Contributed Perl Documentation			       Mojo::Message::Request(3pm)

NAME
Mojo::Message::Request - HTTP 1.1 request container SYNOPSIS
use Mojo::Message::Request; # Parse my $req = Mojo::Message::Request->new; $req->parse("GET /foo HTTP/1.0x0ax0d"); $req->parse("Content-Length: 12x0ax0dx0ax0d"); $req->parse("Content-Type: text/plainx0ax0dx0ax0d"); $req->parse('Hello World!'); say $req->body; # Build my $req = Mojo::Message::Request->new; $req->url->parse('http://127.0.0.1/foo/bar'); $req->method('GET'); say $req->to_string; DESCRIPTION
Mojo::Message::Request is a container for HTTP 1.1 requests as described in RFC 2616. EVENTS
Mojo::Message::Request inherits all events from Mojo::Message. ATTRIBUTES
Mojo::Message::Request inherits all attributes from Mojo::Message and implements the following new ones. "env" my $env = $req->env; $req = $req->env({}); Direct access to the "CGI" or "PSGI" environment hash if available. # Check CGI version my $version = $req->env->{GATEWAY_INTERFACE}; # Check PSGI version my $version = $req->env->{'psgi.version'}; "method" my $method = $req->method; $req = $req->method('POST'); HTTP request method, defaults to "GET". "url" my $url = $req->url; $req = $req->url(Mojo::URL->new); HTTP request URL, defaults to a Mojo::URL object. my $foo = $req->url->query->to_hash->{foo}; METHODS
Mojo::Message::Request inherits all methods from Mojo::Message and implements the following new ones. "clone" my $clone = $req->clone; Clone request if possible, otherwise return "undef". "cookies" my $cookies = $req->cookies; $req = $req->cookies(Mojo::Cookie::Request->new); $req = $req->cookies({name => 'foo', value => 'bar'}); Access request cookies, usually Mojo::Cookie::Request objects. say $req->cookies->[1]->value; "fix_headers" $req = $req->fix_headers; Make sure request has all required headers for the current HTTP version. "is_secure" my $success = $req->is_secure; Check if connection is secure. "is_xhr" my $success = $req->is_xhr; Check "X-Requested-With" header for "XMLHttpRequest" value. "param" my @names = $req->param; my $foo = $req->param('foo'); my @foo = $req->param('foo'); Access "GET" and "POST" parameters. Note that this method caches all data, so it should not be called before the entire request body has been received. "params" my $p = $req->params; All "GET" and "POST" parameters, usually a Mojo::Parameters object. say $req->params->param('foo'); "parse" $req = $req->parse('GET /foo/bar HTTP/1.1'); $req = $req->parse(REQUEST_METHOD => 'GET'); $req = $req->parse({REQUEST_METHOD => 'GET'}); Parse HTTP request chunks or environment hash. "proxy" my $proxy = $req->proxy; $req = $req->proxy('http://foo:bar@127.0.0.1:3000'); $req = $req->proxy(Mojo::URL->new('http://127.0.0.1:3000')); Proxy URL for request. # Disable proxy $req->proxy(0); "query_params" my $p = $req->query_params; All "GET" parameters, usually a Mojo::Parameters object. say $req->query_params->to_hash->{'foo'}; SEE ALSO
Mojolicious, Mojolicious::Guides, <http://mojolicio.us>. perl v5.14.2 2012-09-05 Mojo::Message::Request(3pm)
All times are GMT -4. The time now is 06:53 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy