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: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45954E15.1020708>
