I am trying to communicate with a server that is ready to accept HTTP GET requests and send back data per the request. However, I have very little experience in socket programming and I don't really know how to debug this. Googling on the web hasn't yielded much, except people saying I need to read the HTTP 1.1 spec which is the last thing I want to do.
I seem to be able to create, bind the socket and then send a GET request and that seems ok too but I am not able to receive anything.
The following are the relevant parts of the code:
Connection established:
Code:
/* connect to host */
if(connect(hSocket,(struct sockaddr*)&Address,sizeof(Address))
== SOCKET_ERROR)
{
verbose("Could not connect to host a socket");
return 0;
}
verbose("Connection established")
Sending request:
Code:
char *getRequest = "GET /path/to/server.aspx?Action=GetConfig&MachineName=node1 HTTP/1.1\n";
if(send(hSocket, getRequest, strlen(getRequest), 0) < 0) {
verbose("Error with sending socket");
return 0;
}
else {
verbose("Successful with sending socket get request to get config file");
}
The above works fine, but then below the receiving fails, in the first if-statement:
Code:
verbose("Attempting to receive from server");
char echoBuffer[9999];
/* Receive config information from server */
int totalBytesRcvd = 0;
unsigned int echoStringLen;
int bytesRcvd;
printf("Received: "); /* Setup to print the echoed string */
while (totalBytesRcvd < echoStringLen)
{
/* Receive up to the buffer size (minus 1 to leave space for
a null terminator) bytes from the sender */
if ((bytesRcvd = recv(hSocket, echoBuffer, 9999 - 1, 0)) <= 0)
{
printf("recv() failed or connection closed prematurely");
return 0;
}
totalBytesRcvd += bytesRcvd; /* Keep tally of total bytes */
echoBuffer[bytesRcvd] = '\0'; /* Terminate the string! */
printf("%s", echoBuffer); /* Print the echo buffer */
}
Can anyone share some insight as to how I can re-write the receiving code to get the data that is supposed to be returned to be based on the GET request? What is wrong here?
Hi everybody,
I have a *.vbs file which I want to run automatically. I want to know if there is anyway to implement the given example
for e.g "http://255.255.255.55/script.vbs"
what I mean is does anyone know how to make an http request from a unix script??
Thanks in advance!!!!!!!!!!! (1 Reply)
Hi,
i need a guide how to write a script which i can do a http request. Let say the request look like below;
http://www.test.com?txid=1&type=service&server=linux
I have a list of "txid" (in *.txt) and need to run all "txid" acordingly. So that mean, every transaction i have to refer "txid"... (7 Replies)
Hi,
Maybe it's a stupid question, anyway here goes..
I have an Apache web server on Solaris box, let's say A, with a public ip
and a web application on a Linux box, uhmmm B, on a private lan with a private ip.
I want the people from outside to connect to the app, but its inside the lan,... (4 Replies)
Ok. I'm testing a new program component that is supposed to speed up our pipeline on the server. What it does is take in HEAD requests and shuffle them off to a different pipeline that is specially designed to handle HEAD requests quickly. The functionality works but now comes the question: how... (3 Replies)
Hi all,
Im trying to make an http get request to a web service from a linux machine like below and i get ERROR 500
wget http://10.1.21.236:8585/pns.asmx/Sen...&msgBody=werty
25018
$ --19:06:32-- http://10.1.21.236:8585/pns.asmx/Sen...erName=serverA
Connecting to 10.1.21.236:8585...... (1 Reply)
Hello,
I am using apache 2.2 and I need to have certain http requests (those including example.com for instance) to be executed normally and forwarded to another server.
With mod_rewrite, I could easily forward but then the input request would not be executed on my server. Right?
Am I... (1 Reply)
I am running a website but I still have problems with the "service temporarily unavailable error". I want to make a simple check if the website is up and running. Does anybody has an idea how to do it? (the site is password protected, so you have to add a user and pwd before logging in).
... (2 Replies)
Hi,
I am trying to write a shell script to parse the post request data that it received to a xml file. Below is the post request data that script is receiving.
-----------------------------7dd2339190c8e
Content-Disposition: form-data; name="param1"
1... (2 Replies)
Discussion started by: jdp
2 Replies
LEARN ABOUT DEBIAN
accf_http
ACCF_HTTP(9) BSD Kernel Developer's Manual ACCF_HTTP(9)NAME
accf_http -- buffer incoming connections until a certain complete HTTP requests arrive
SYNOPSIS
options INET
options ACCEPT_FILTER_HTTP
kldload accf_http
DESCRIPTION
This is a filter to be placed on a socket that will be using accept() to receive incoming HTTP connections.
It prevents the application from receiving the connected descriptor via accept() until either a full HTTP/1.0 or HTTP/1.1 HEAD or GET request
has been buffered by the kernel.
If something other than a HTTP/1.0 or HTTP/1.1 HEAD or GET request is received the kernel will allow the application to receive the connec-
tion descriptor via accept().
The utility of accf_http is such that a server will not have to context switch several times before performing the initial parsing of the
request. This effectively reduces the amount of required CPU utilization to handle incoming requests by keeping active processes in prefork-
ing servers such as Apache low and reducing the size of the file descriptor set that needs to be managed by interfaces such as select(),
poll() or kevent() based servers.
The accf_http kernel option is also a module that can be enabled at runtime via kldload(8) if the INET option has been compiled into the ker-
nel.
EXAMPLES
Assuming ACCEPT_FILTER_HTTP has been included in the kernel config file or the accf_http module has been loaded, this will enable the http
accept filter on the socket sok.
struct accept_filter_arg afa;
bzero(&afa, sizeof(afa));
strcpy(afa.af_name, "httpready");
setsockopt(sok, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa));
SEE ALSO setsockopt(2), accept_filter(9)HISTORY
The accept filter mechanism and the accf_http filter were introduced in FreeBSD 4.0.
AUTHORS
This manual page and the filter were written by Alfred Perlstein.
BSD November 15, 2000 BSD