All of lore.kernel.org
 help / color / mirror / Atom feed
* connecting to a hoast
@ 2004-09-12 21:04 Ameer Armaly
  2004-09-13  7:16 ` John T. Williams
  2004-09-13  8:03 ` Ron Michael Khu
  0 siblings, 2 replies; 5+ messages in thread
From: Ameer Armaly @ 2004-09-12 21:04 UTC (permalink / raw)
  To: linux-c-programming

Hi all.
I was wondering, where is a step by step instructions to connect to a 
hoast?
The documentation seems very cryptic, and doesn't give directions.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: connecting to a hoast
  2004-09-12 21:04 connecting to a hoast Ameer Armaly
@ 2004-09-13  7:16 ` John T. Williams
  2004-09-13  8:35   ` John T. Williams
  2004-09-13  8:03 ` Ron Michael Khu
  1 sibling, 1 reply; 5+ messages in thread
From: John T. Williams @ 2004-09-13  7:16 UTC (permalink / raw)
  To: John T Williams; +Cc: linux-c-programming

Ok

-------- Start Code ---------------------------------
#include <sys/socket.h>         // for connection api
#include <sys/types.h>          // for predefined values
#include <netdb.h>              // for hostname resolution api

char* host = "ftp.domain.com¡;
int port = 25;
struct sockaddr_in passive;  
struct protoent * proto;
int skt;

proto = getprotobyname("tcp")   
// gets the prototype number for tcp/ip 

skt = socket(PF_INET, SOCK_STREAM, proto->p_proto );    
//creates a socket 

passive.sin_family      = AF_INET;              
// IPv4 connection type
passive.sin_addr        = gethostbye(host);     
// resolves the hostname and returns the correct in_addr
passive.sin_port        = htons(port);          
// htons changes the bit order so that it is in network format

connect(skt, &passive, sizeof(passive));        
// connect to host   

close(skt);
// close connection
-------- End Code -----------------------------------
this code does not check for errors and will probably crash if anything
goes wrong.  How ever it does show how to connect to a server.

You should read:
http://www.gnu.org/software/libc/manual/html_node/Connections.html#Connections

- John


On Sun, 2004-09-12 at 16:04, Ameer Armaly wrote:
> Hi all.
> I was wondering, where is a step by step instructions to connect to a 
> hoast?
> The documentation seems very cryptic, and doesn't give directions.
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: connecting to a hoast
  2004-09-12 21:04 connecting to a hoast Ameer Armaly
  2004-09-13  7:16 ` John T. Williams
@ 2004-09-13  8:03 ` Ron Michael Khu
  1 sibling, 0 replies; 5+ messages in thread
From: Ron Michael Khu @ 2004-09-13  8:03 UTC (permalink / raw)
  To: Ameer Armaly; +Cc: linux-c-programming

you can try reading the "beej guide" at 
www.ecst.csuchico.edu/~beej/guide/net
it covers some of the basics of C sockets programming
=)

Ameer Armaly wrote:

> Hi all.
> I was wondering, where is a step by step instructions to connect to a 
> hoast?
> The documentation seems very cryptic, and doesn't give directions.
>
> -
> To unsubscribe from this list: send the line "unsubscribe 
> linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: connecting to a hoast
  2004-09-13  7:16 ` John T. Williams
@ 2004-09-13  8:35   ` John T. Williams
  0 siblings, 0 replies; 5+ messages in thread
From: John T. Williams @ 2004-09-13  8:35 UTC (permalink / raw)
  To: jtwilliams; +Cc: John T Williams, linux-c-programming

small correction to the code + this actually fetches a webpage 
------------------------

#include <sys/types.h>
#include <netdb.h>


int main() {

        char* host = "www.vt.edu";
        int port = 80;
        struct sockaddr_in passive;
        struct protoent* proto;
        struct hostent  hostent;
        char buff[512];
        int skt;
        int sz;

        proto = getprotobyname("tcp");
        skt = socket(PF_INET, SOCK_STREAM, proto->p_proto );
        hostent = *gethostbyname(host);
        passive.sin_family = AF_INET;
        memcpy(&passive.sin_addr, hostent.h_addr, hostent.h_length);
        passive.sin_port = htons(port);
        connect(skt, (struct sockaddr*) &passive, sizeof(passive));
        sz = sprintf(buff, "GET / HTTP/1.1\r\nHOST:www.vt.edu\r\n\r\n");
        write(skt, buff, sz);
        while( (sz = read(skt,buff, 512) ) > 0  ) {
        
                printf(buff);
        
        }
        printf("\n");
        close(skt);
        return 0;
}

On Mon, 2004-09-13 at 02:16, John T. Williams wrote:
> Ok
> 
> -------- Start Code ---------------------------------
> #include <sys/socket.h>         // for connection api
> #include <sys/types.h>          // for predefined values
> #include <netdb.h>              // for hostname resolution api
> 
> char* host = "ftp.domain.com¡;
> int port = 25;
> struct sockaddr_in passive;  
> struct protoent * proto;
> int skt;
> 
> proto = getprotobyname("tcp")   
> // gets the prototype number for tcp/ip 
> 
> skt = socket(PF_INET, SOCK_STREAM, proto->p_proto );    
> //creates a socket 
> 
> passive.sin_family      = AF_INET;              
> // IPv4 connection type
> passive.sin_addr        = gethostbye(host);     
> // resolves the hostname and returns the correct in_addr
> passive.sin_port        = htons(port);          
> // htons changes the bit order so that it is in network format
> 
> connect(skt, &passive, sizeof(passive));        
> // connect to host   
> 
> close(skt);
> // close connection
> -------- End Code -----------------------------------
> this code does not check for errors and will probably crash if anything
> goes wrong.  How ever it does show how to connect to a server.
> 
> You should read:
> http://www.gnu.org/software/libc/manual/html_node/Connections.html#Connections
> 
> - John
> 
> 
> On Sun, 2004-09-12 at 16:04, Ameer Armaly wrote:
> > Hi all.
> > I was wondering, where is a step by step instructions to connect to a 
> > hoast?
> > The documentation seems very cryptic, and doesn't give directions.
> > 
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: connecting to a hoast
@ 2004-09-13 16:09 Huber, George K RDECOM CERDEC STCD SRI
  0 siblings, 0 replies; 5+ messages in thread
From: Huber, George K RDECOM CERDEC STCD SRI @ 2004-09-13 16:09 UTC (permalink / raw)
  To: linux-c-programming


>Hi all.
>I was wondering, where is a step by step instructions to connect to a
hoast?
>The documentation seems very cryptic, and doesn't give directions.

There are several online tutorial for network programming (beej for
example),
however if you intend to do a lot of network programming, I would recommend
reading one or more of the following books:

1. Unix Network Programming vol 1 and 2 by W. Richard Stevens

   N.B. - volume one was recently updated by Bill Fenner and Andrew M Rudoff

          after Stevens death.

   volumn 1 covers Sockets and XTI programming.  Lots of examples and
details 
   volume 2 covers interprocess communications

2. Internetworking with TCP/IP vol 1 -3 by Douglas Comer and David Stevens

   volume 1 covers the protocols and architecture
   volume 2 covers the implementation of the network stack and protocols
   volume 3 covers client-server programming.  There are seperate volumes 
            for most of the popular operating systems.

3. TCP/IP Illustrated, vol 1 - 3 by W. Richard Stevens
   volume 1 is a detailed coverage of the protocols and how they work
   volume 2 is a line by line code walkthrough for the TCP stack of 4.4BSD
   volume 3 covers transaction based communications and UNIX domain
protocols

3. Linux Socket Programming by Sean Walton

4. Effective TCP/IP Programming: 44 Tips to Improve Your Programming,
   Jon C. Snader

   Lots of useful tips to improve you code.

George


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2004-09-13 16:09 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-09-12 21:04 connecting to a hoast Ameer Armaly
2004-09-13  7:16 ` John T. Williams
2004-09-13  8:35   ` John T. Williams
2004-09-13  8:03 ` Ron Michael Khu
  -- strict thread matches above, loose matches on Subject: below --
2004-09-13 16:09 Huber, George K RDECOM CERDEC STCD SRI

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.