Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Dec 2006 12:19:17 -0500
From:      Chuck Swiger <>
To:        linux quest <>
Subject:   Re: How to compile first network program? E.g. to PING
Message-ID:  <>
In-Reply-To: <>
References:  <>

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 ??? 

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 > /dev/null");
>     if (ping_failed) {
>         puts("\nPinging failed!\n");
>     } else {
>         puts("\nPinging succeeded.\n");
>     }
> }
> % cc -o pg ping_google.c
> % ./pg
> Pinging 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

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


Want to link to this message? Use this URL: <>