Networking Forums

Networking Forums > Computer Networking > Linux Networking > HTTP client program

Reply
Thread Tools Display Modes

HTTP client program

 
 
Nachiketh
Guest
Posts: n/a

 
      05-06-2004, 11:41 AM
hi,
i have written a HTTP client to connect to my local host and retrive a
static webpage on my machine. i have got rid of the syntax errors, but
am not able to debug the program. if neone can plz help me out wid
this,
-Nachiketh
Code :
#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<arpa/inet.h>
#include<string.h>
#define SERV_PORT 80
#define SERV_ADDR "127.0.0.1"
int readn(int fd,char* msg,int maxlen)
{
int n=1,rc;
char c;
printf("reading");
for(n=1;n<maxlen;n++)
{
if((rc=read(fd,&c,1))==1)
{
printf("%c",&c);
*msg++=c;
if(c=='\n')
{
printf("%s",msg);
break;
}
}
else if(rc==0)
{
if(n==1)
return 0; /* EOF, no data read */
else
break; /* EOF, some data was read */
}
else
return -1; /*error */

}

*msg=0;
return n;
}

int writen(int sockfd,char*msg,int nbytes)
{
int nleft,nwritten;
nleft=nbytes;
printf("Start writing Bytes = %d Mesg=%s\n", nbytes,msg);
while(nleft>0)
{
nwritten=write(sockfd,msg,nleft);
printf("WRITEN0 :nwritten=%d\n", nwritten);
if(nwritten <= 0)
{ printf("WRITEN 1:%d",nwritten);
return(nwritten); //error
}
printf("WRITE01:%d\n",nwritten);
nleft-=nwritten;
msg+=nwritten;
}
printf("WRITEN2 :%d,%d\n",nbytes,nleft);
return(nbytes-nleft);
}
main()
{
struct sockaddr_in sock;
int sfd,n,i;
char buff[200],reply[250];
buff[0] =0, reply[0] = 0;
sfd = socket(AF_INET,SOCK_STREAM,0);
if (sfd < 0) { printf("Unable to open socket\n"); exit(0); }
bzero((char*)&sock,sizeof(socket));
sock.sin_family = AF_INET;
sock.sin_port = htons(SERV_PORT);
sock.sin_addr.s_addr = inet_addr(SERV_ADDR);

if(connect(sfd,(struct sockaddr *)&sock,sizeof(sock))<0)
{ printf("Unable to connect to server\n");

}
else
{

strcpy(buff,"GET /home/nachi/LatestVersion.html HTTP/1.0\r\n");
printf("%s",buff);
n = strlen(buff);
printf("main:N = %d\n",n);
i = writen(sfd,buff,n);
printf("\n%d\n",i);
if(i != n)
printf (" Write Error \n");
//printf("success0!");
else {
printf("success1!");
if(readn(sfd,reply,250)<0)
{
printf("read error\n");
}
//printf("success2!");
else
printf ("read: %s ",reply);
}
}

close(sfd);
}
 
Reply With Quote
 
 
 
 
Jan Geertsma
Guest
Posts: n/a

 
      05-06-2004, 04:32 PM
Change the localhost to an external host and do a tcpdump/snoop/ethereal
trace to see what the packages look like

Jan

Nachiketh wrote:

> hi,
> i have written a HTTP client to connect to my local host and retrive a
> static webpage on my machine. i have got rid of the syntax errors, but
> am not able to debug the program. if neone can plz help me out wid
> this,
> -Nachiketh
> Code :
> #include<stdio.h>
> #include<sys/socket.h>
> #include<sys/types.h>
> #include<arpa/inet.h>
> #include<string.h>
> #define SERV_PORT 80
> #define SERV_ADDR "127.0.0.1"
> int readn(int fd,char* msg,int maxlen)
> {
> int n=1,rc;
> char c;
> printf("reading");
> for(n=1;n<maxlen;n++)
> {
> if((rc=read(fd,&c,1))==1)
> {
> printf("%c",&c);
> *msg++=c;
> if(c=='\n')
> {
> printf("%s",msg);
> break;
> }
> }
> else if(rc==0)
> {
> if(n==1)
> return 0; /* EOF, no data read */
> else
> break; /* EOF, some data was read */
> }
> else
> return -1; /*error */
>
> }
>
> *msg=0;
> return n;
> }
>
> int writen(int sockfd,char*msg,int nbytes)
> {
> int nleft,nwritten;
> nleft=nbytes;
> printf("Start writing Bytes = %d Mesg=%s\n", nbytes,msg);
> while(nleft>0)
> {
> nwritten=write(sockfd,msg,nleft);
> printf("WRITEN0 :nwritten=%d\n", nwritten);
> if(nwritten <= 0)
> { printf("WRITEN 1:%d",nwritten);
> return(nwritten); //error
> }
> printf("WRITE01:%d\n",nwritten);
> nleft-=nwritten;
> msg+=nwritten;
> }
> printf("WRITEN2 :%d,%d\n",nbytes,nleft);
> return(nbytes-nleft);
> }
> main()
> {
> struct sockaddr_in sock;
> int sfd,n,i;
> char buff[200],reply[250];
> buff[0] =0, reply[0] = 0;
> sfd = socket(AF_INET,SOCK_STREAM,0);
> if (sfd < 0) { printf("Unable to open socket\n"); exit(0); }
> bzero((char*)&sock,sizeof(socket));
> sock.sin_family = AF_INET;
> sock.sin_port = htons(SERV_PORT);
> sock.sin_addr.s_addr = inet_addr(SERV_ADDR);
>
> if(connect(sfd,(struct sockaddr *)&sock,sizeof(sock))<0)
> { printf("Unable to connect to server\n");
>
> }
> else
> {
>
> strcpy(buff,"GET /home/nachi/LatestVersion.html HTTP/1.0\r\n");
> printf("%s",buff);
> n = strlen(buff);
> printf("main:N = %d\n",n);
> i = writen(sfd,buff,n);
> printf("\n%d\n",i);
> if(i != n)
> printf (" Write Error \n");
> //printf("success0!");
> else {
> printf("success1!");
> if(readn(sfd,reply,250)<0)
> {
> printf("read error\n");
> }
> //printf("success2!");
> else
> printf ("read: %s ",reply);
> }
> }
>
> close(sfd);
> }

 
Reply With Quote
 
DoesntMatter
Guest
Posts: n/a

 
      05-07-2004, 08:49 PM
Nachiketh wrote:

> hi,
> i have written a HTTP client to connect to my local host and retrive a
> static webpage on my machine. i have got rid of the syntax errors, but
> am not able to debug the program. if neone can plz help me out wid
> this,
> -Nachiketh
> Code :
> #include<stdio.h>
> #include<sys/socket.h>
> #include<sys/types.h>
> #include<arpa/inet.h>
> #include<string.h>
> #define SERV_PORT 80
> #define SERV_ADDR "127.0.0.1"
> int readn(int fd,char* msg,int maxlen)
> {
> int n=1,rc;
> char c;
> printf("reading");
> for(n=1;n<maxlen;n++)
> {
> if((rc=read(fd,&c,1))==1)
> {
> printf("%c",&c);
> *msg++=c;
> if(c=='\n')
> {
> printf("%s",msg);
> break;
> }
> }
> else if(rc==0)
> {
> if(n==1)
> return 0; /* EOF, no data read */
> else
> break; /* EOF, some data was read */
> }
> else
> return -1; /*error */
>
> }
>
> *msg=0;
> return n;
> }
>
> int writen(int sockfd,char*msg,int nbytes)
> {
> int nleft,nwritten;
> nleft=nbytes;
> printf("Start writing Bytes = %d Mesg=%s\n", nbytes,msg);
> while(nleft>0)
> {
> nwritten=write(sockfd,msg,nleft);
> printf("WRITEN0 :nwritten=%d\n", nwritten);
> if(nwritten <= 0)
> { printf("WRITEN 1:%d",nwritten);
> return(nwritten); //error
> }
> printf("WRITE01:%d\n",nwritten);
> nleft-=nwritten;
> msg+=nwritten;
> }
> printf("WRITEN2 :%d,%d\n",nbytes,nleft);
> return(nbytes-nleft);
> }
> main()
> {
> struct sockaddr_in sock;
> int sfd,n,i;
> char buff[200],reply[250];
> buff[0] =0, reply[0] = 0;
> sfd = socket(AF_INET,SOCK_STREAM,0);
> if (sfd < 0) { printf("Unable to open socket\n"); exit(0); }
> bzero((char*)&sock,sizeof(socket));
> sock.sin_family = AF_INET;
> sock.sin_port = htons(SERV_PORT);
> sock.sin_addr.s_addr = inet_addr(SERV_ADDR);
>
> if(connect(sfd,(struct sockaddr *)&sock,sizeof(sock))<0)
> { printf("Unable to connect to server\n");
>
> }
> else
> {
>
> strcpy(buff,"GET /home/nachi/LatestVersion.html HTTP/1.0\r\n");
> printf("%s",buff);
> n = strlen(buff);
> printf("main:N = %d\n",n);
> i = writen(sfd,buff,n);
> printf("\n%d\n",i);
> if(i != n)
> printf (" Write Error \n");
> //printf("success0!");
> else {
> printf("success1!");
> if(readn(sfd,reply,250)<0)
> {
> printf("read error\n");
> }
> //printf("success2!");
> else
> printf ("read: %s ",reply);
> }
> }
>
> close(sfd);
> }


system("wget SomeURL"); :-)
 
Reply With Quote
 
 
 
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
why my client-server program in not working over internet ?? asit Linux Networking 0 08-29-2007 07:11 PM
Http Client application vinay.chiniwar@gmail.com Linux Networking 0 10-07-2005 02:10 AM
Http Client Side Programming --- Any Libraries Avl. Sriram Linux Networking 4 06-03-2004 02:04 PM
Compose HTTP packet from program Michael Mezheritsky Linux Networking 3 05-13-2004 12:35 PM
socksified program with HTTP proxy noone Linux Networking 0 01-11-2004 07:23 PM



1 2 3 4 5 6 7 8 9 10 11