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