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
XMLRPC::Transport::HTTP(3)				User Contributed Perl Documentation				XMLRPC::Transport::HTTP(3)

NAME
XMLRPC::Transport::HTTP - Server/Client side HTTP support for XMLRPC::Lite SYNOPSIS
Client use XMLRPC::Lite proxy => 'http://localhost/', # proxy => 'http://localhost/cgi-bin/xmlrpc.cgi', # local CGI server # proxy => 'http://localhost/', # local daemon server # proxy => 'http://login:password@localhost/cgi-bin/xmlrpc.cgi', # local CGI server with authentication ; print getStateName(1); CGI server use XMLRPC::Transport::HTTP; my $server = XMLRPC::Transport::HTTP::CGI -> dispatch_to('methodName') -> handle ; Daemon server use XMLRPC::Transport::HTTP; my $daemon = XMLRPC::Transport::HTTP::Daemon -> new (LocalPort => 80) -> dispatch_to('methodName') ; print "Contact to XMLRPC server at ", $daemon->url, " "; $daemon->handle; DESCRIPTION
This class encapsulates all HTTP related logic for a XMLRPC server, independent of what web server it's attached to. If you want to use this class you should follow simple guideline mentioned above. PROXY SETTINGS You can use any proxy setting you use with LWP::UserAgent modules: XMLRPC::Lite->proxy('http://endpoint.server/', proxy => ['http' => 'http://my.proxy.server']); or $xmlrpc->transport->proxy('http' => 'http://my.proxy.server'); should specify proxy server for you. And if you use "HTTP_proxy_user" and "HTTP_proxy_pass" for proxy authorization SOAP::Lite should know how to handle it properly. COOKIE-BASED AUTHENTICATION use HTTP::Cookies; my $cookies = HTTP::Cookies->new(ignore_discard => 1); # you may also add 'file' if you want to keep them between sessions my $xmlrpc = XMLRPC::Lite->proxy('http://localhost/'); $xmlrpc->transport->cookie_jar($cookies); Cookies will be taken from response and provided for request. You may always add another cookie (or extract what you need after response) with HTTP::Cookies interface. You may also do it in one line: $xmlrpc->proxy('http://localhost/', cookie_jar => HTTP::Cookies->new(ignore_discard => 1)); COMPRESSION XMLRPC::Lite provides you option for enabling compression on wire (for HTTP transport only). Both server and client should support this capability, but this logic should be absolutely transparent for your application. Server will respond with encoded message only if client can accept it (client sends Accept-Encoding with 'deflate' or '*' values) and client has fallback logic, so if server doesn't understand specified encoding (Content-Encoding: deflate) and returns proper error code (415 NOT ACCEPTABLE) client will repeat the same request not encoded and will store this server in per-session cache, so all other requests will go there without encoding. Having options on client and server side that let you specify threshold for compression you can safely enable this feature on both client and server side. Compression will be enabled on client side IF: threshold is specified AND size of current message is bigger than threshold AND module Compress::Zlib is available. Client will send header 'Accept-Encoding' with value 'deflate' if threshold is specified AND module Compress::Zlib is available. Server will accept compressed message if module Compress::Zlib is available, and will respond with compressed message ONLY IF: threshold is specified AND size of current message is bigger than threshold AND module Compress::Zlib is available AND header 'Accept-Encoding' is presented in request. DEPENDENCIES
Crypt::SSLeay for HTTPS/SSL HTTP::Daemon for XMLRPC::Transport::HTTP::Daemon Apache, Apache::Constants for XMLRPC::Transport::HTTP::Apache SEE ALSO
See ::CGI, ::Daemon and ::Apache for implementation details. See examples/XMLRPC/* for examples. COPYRIGHT
Copyright (C) 2000-2001 Paul Kulchenko. All rights reserved. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. AUTHOR
Paul Kulchenko (paulclinger@yahoo.com) perl v5.12.1 2010-03-18 XMLRPC::Transport::HTTP(3)
All times are GMT -4. The time now is 04:11 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy