How to compile first network program? E.g. to PING google.com

Chuck Swiger cswiger at mac.com
Fri Dec 29 09:19:27 PST 2006


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


More information about the freebsd-questions mailing list