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
HTTP::Proxy::BodyFilter::htmlparser(3pm)		User Contributed Perl Documentation		  HTTP::Proxy::BodyFilter::htmlparser(3pm)

NAME
HTTP::Proxy::BodyFilter::htmlparser - Filter using HTML::Parser SYNOPSIS
use HTTP::Proxy::BodyFilter::htmlparser; # $parser is a HTML::Parser object $proxy->push_filter( mime => 'text/html', response => HTTP::Proxy::BodyFilter::htmlparser->new( $parser ); ); DESCRIPTION
The HTTP::Proxy::BodyFilter::htmlparser lets you create a filter based on the HTML::Parser object of your choice. This filter takes a HTML::Parser object as an argument to its constructor. The filter is either read-only or read-write. A read-only filter will not allow you to change the data on the fly. If you request a read-write filter, you'll have to rewrite the response-body completely. With a read-write filter, you must recreate the whole body data. This is mainly due to the fact that the HTML::Parser has its own buffering system, and that there is no easy way to correlate the data that triggered the HTML::Parser event and its original position in the chunk sent by the origin server. See below for details. Note that a simple filter that modify the HTML text (not the tags) can be created more easily with HTTP::Proxy::BodyFilter::htmltext. Creating a HTML::Parser that rewrites pages A read-write filter is declared by passing "rw => 1" to the constructor: HTTP::Proxy::BodyFilter::htmlparser->new( $parser, rw => 1 ); To be able to modify the body of a message, a filter created with HTTP::Proxy::BodyFilter::htmlparser must rewrite it completely. The HTML::Parser object can update a special attribute named "output". To do so, the HTML::Parser handler will have to request the "self" attribute (that is to say, require access to the parser itself) and update its "output" key. The following attributes are added to the HTML::Parser object by this filter: output A string that will hold the data sent back by the proxy. This string will be used as a replacement for the body data only if the filter is read-write, that is to say, if it was initialised with "rw => 1". Data should always be appended to "$parser->{output}". message A reference to the HTTP::Message that triggered the filter. protocol A reference to the HTTP::Protocol object. METHODS
This filter defines three methods, called automatically: filter() The "filter()" method handles all the interactions with the HTML::Parser object. init() Initialise the filter with the HTML::Parser object passed to the constructor. will_modify() This method returns a boolean value that indicates to the system if it will modify the data passing through. The value is actually the value of the "rw" parameter passed to the constructor. SEE ALSO
HTTP::Proxy, HTTP::Proxy::Bodyfilter, HTTP::Proxy::BodyFilter::htmltext. AUTHOR
Philippe "BooK" Bruhat, <book@cpan.org>. COPYRIGHT
Copyright 2003-2006, Philippe Bruhat. LICENSE
This module is free software; you can redistribute it or modify it under the same terms as Perl itself. perl v5.12.4 2011-07-03 HTTP::Proxy::BodyFilter::htmlparser(3pm)
All times are GMT -4. The time now is 05:48 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy