Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Dec 2006 12:19:17 -0500
From:      Chuck Swiger <cswiger@mac.com>
To:        linux quest <linuxquest7570@yahoo.com>
Cc:        FreeBSD-questions@FreeBSD.org
Subject:   Re: How to compile first network program? E.g. to PING google.com
Message-ID:  <45954E15.1020708@mac.com>
In-Reply-To: <978214.91301.qm@web59208.mail.re1.yahoo.com>
References:  <978214.91301.qm@web59208.mail.re1.yahoo.com>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help
linux quest wrote:
[ ... ]

Notice: steep learning curve ahead.  I suggest you clarify what you want to do 
and what problems you are trying to solve; learning how to write simple code 
in C comes before learning how to write network code in C and learning how to 
work in Unix is a separate issue entirely.

> So, my question is ... 
> 
> 1.    How can I write a very simple C network program ... to lets say I wanted to ping google.com ??? 

A minimal program would involve the system() call to run the existing ping 
program directly:

> % cat ping_google.c
> #include <stdlib.h>
> 
> int main(int argc, char *argv[])
> {
>     int ping_failed;
> 
>     ping_failed = system("/sbin/ping -oq google.com > /dev/null");
>     if (ping_failed) {
>         puts("\nPinging google.com failed!\n");
>     } else {
>         puts("\nPinging google.com succeeded.\n");
>     }
> }
> % cc -o pg ping_google.c
> % ./pg
> 
> Pinging google.com succeeded.

...for a more complete implementation, something which allocates its own 
sockets and deals with the network itself, look at /usr/src/sbin/ping/ping.c; 
it's about 1700 lines long.  However, it would be possible to write something 
much smaller using libnet, for example.

> 2.    Which directory / location in UNIX should I go to? 

Most people create a location under their home directory called "Projects" or 
"Workareas", or something similar, and create and work on their stuff in a 
subdirectory under there.

> 3.    How do I compile and execute the simple C network program - lets say doing a ping on google.com???

For trivial cases, using "cc" directly.  For more complex programs, most 
people use Makefiles.

-- 
-Chuck



Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?45954E15.1020708>