Visit Our UNIX and Linux User Community

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?
 
Test Your Knowledge in Computers #336
Difficulty: Easy
sed -e 'r' /etc/passwd will recover lost password on a Unix system.
True or False?

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
CUBRID_PCONNECT_WITH_URL(3)						 1					       CUBRID_PCONNECT_WITH_URL(3)

cubrid_pconnect_with_url - Open a persistent connection to CUBRID server

SYNOPSIS
resource cubrid_pconnect_with_url (string $conn_url, [string $userid], [string $passwd]) DESCRIPTION
Establishes a persistent connection to a CUBRID server. cubrid_pconnect_with_url(3) acts very much like cubrid_connect_with_url(3) with two major differences. First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, port, dbname and userid. If one is found, an identifier for it will be returned instead of opening a new connection. Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (cubrid_close(3) or cubrid_disconnect(3) will not close links established by cubrid_pconnect_with_url(3)). This type of link is therefore called 'persistent'. <url> ::= CUBRID:<host>:<db_name>:<db_user>:<db_password>:[?<properties>] <properties> ::= <property> [&<property>] <properties> ::= alhosts=<alternative_hosts>[ &rctime=<time>] <properties> ::= login_timeout=<milli_sec> <properties> ::= query_timeout=<milli_sec> <properties> ::= disconnect_on_query_timeout=true|false <alternative_hosts> ::= <standby_broker1_host>:<port> [,<standby_broker2_host>:<port>] <host> := HOSTNAME | IP_ADDR <time> := SECOND <milli_sec> := MILLI SECOND ohost : A host name or IP address of the master database odb_name : A name of the database odb_user : A name of the database user odb_password : A database user password o alhosts : Specifies the broker information of the standby server, which is used for failover when it is impossible to connect to the active server. You can specify multiple brokers for failover, and the connection to the brokers is attempted in the order listed in alhosts o rctime : An interval between the attempts to connect to the active broker in which failure occurred. After a failure occurs, the system connects to the broker specified by althosts (failover), terminates the transaction, and then attempts to connect to the active broker of the master database at every rctime. The default value is 600 seconds. o login_timeout : Timeout value (unit: msec.) for database login. The default value is 0, which means infinite postponement. o query_timeout : Timeout value (unit: msec.) for query request. Upon timeout, a message to cancel requesting a query transferred to server is sent. The return value can depend on the disconnect_on_query_timeout configuration; even though the message to cancel a request is sent to server, that request may succeed. o disconnect_on_query_timeout : Configures a value whether to immediately return an error of function being executed upon timeout. The default value is false. Note ? and : that are used as identifiers in PHP connection URL can't be included in the password. The following is an example of a pass- word that is invalid to use as connection URL because it contains " ?:". $url = "CUBRID:localhost:33000:tdb:dba:12?:?login_timeout=100"; Passwords that contain ? or : may be passed as a separate parameter. $url = "CUBRID:localhost:33000:tbd:::?login_timeout=100"; $conn = cubrid_pconnect_with_url ($url, "dba", "12?"); If user or password is empty,you can't delete " :",the following is an example. $url = "CUBRID:localhost:33000:demodb:::"; PARAMETERS
o $conn_url -A character string that contains server connection information. o $userid -User name for the database. o $passwd -User password. RETURN VALUES
Connection identifier, when process is successful. FALSE, when process is unsuccessful. EXAMPLES
Example #1 cubrid_pconnect_with_url(3) url without properties example <?php $conn_url = "CUBRID:127.0.0.1:33000:demodb:dba::" $con = cubrid_pconnect_with_url ($conn_url); if ($con) { echo "connected successfully"; cubrid_execute($con, "create table person(id int,name char(16))"); $req =cubrid_execute($con, "insert into person values(1,'James')"); if ($req) { cubrid_close_request ($req); cubrid_commit ($con); } else { cubrid_rollback ($con); } cubrid_disconnect ($con); } ?> Example #2 cubrid_pconnect_with_url(3) url with properties example <?php $conn_url = "CUBRID:127.0.0.1:33000:demodb:dba::?althost=10.34.63.132:33088&rctime=100" $con = cubrid_pconnect_with_url ($conn_url); if ($con) { echo "connected successfully"; $req =cubrid_execute($con, "insert into person values(1,'James')"); if ($req) { cubrid_close_request ($req); cubrid_commit ($con); } else { cubrid_rollback ($con); } cubrid_disconnect ($con); } ?> SEE ALSO
cubrid_connect(3), cubrid_pconnect(3), cubrid_pconnect_with_url(3), cubrid_disconnect(3), cubrid_close(3). PHP Documentation Group CUBRID_PCONNECT_WITH_URL(3)

Featured Tech Videos

All times are GMT -4. The time now is 09:15 PM.
Unix & Linux Forums Content Copyright 1993-2020. All Rights Reserved.
Privacy Policy