Beej’s Guide Network to Programming 系列连载01

来源:互联网 发布:迅雷会员 淘宝 编辑:程序博客网 时间:2024/05/22 01:32

        写在篇首:

--------------------------------------------------------------------------------------

        此译文不是标准的一字一句的翻译!

        而是作为一个程序员的角度去理解的产物!

        有兴趣的朋友可以使用邮箱和我沟通!(非常欢迎你的交流)

        我的邮箱: veic_2005#163.com(把#替换为@)

------------------------------------------------------------------完美的分割线--

版权声明:

Beej’s Guide Network to ProgrammingUsing Internet Sockets Brian “Beej Jorgensen” Hallbeej@beej.usVersion 3.0.14September 8, 2009Copyright © 2009 Brian “Beej Jorgensen” Hall

 

1.简介

       唉!Socket 编程让你沮丧吗?从man pages中很难得到有用的信息吗?但是为你在调用 connect() 前的bind() 的结构而不知所措?等等…

        好在我已经将这些事完成了,我将和所有人共享我的知识了。如果你了解 C 语言并想穿过网络编程的沼泽,那么你来对地方了。

       并告诉你:我终于赶上了未来(在最后一刻)并更新了关于IPv6的指南!享受!

1.1 受众

       这个文档是一个指南,而不是参考书。如果你刚开始 socket 编程并想找一本入门书,那么你是我的读者。但这不是一本完全的 socket 编程书。

1.2 平台和编译器

       这篇文档中的大多数代码都在 Linux 平台PC 上用 GNU 的 gcc 成功编译过。

1.3 官方网站

       http://beej.us/guide/bgnet/

1.4 Solaris/SunOS的程序员需要注意

       当在Solaris或者SunOS编译时,你必须多一些参数。像下面这样:

       $ cc -o server server.c -lnsl -lsocket -lresolv

1.5 Windows程序员注意

       你必须增加下面的头文件(除非你安装了Cygwin)

       #include <winsock.h>

       而且,必须首先调用WSAStartup().像下面这样:

       #include <winsock.h>

       …

       {

              WSADATA wsaData;         // if this doesn’t work

              //WSData wsaData;            // then try this instead

             

              // MAKEWORD(1, 1) for Winsock 1.1,MAKEWORD(2, 0) for Winsock 2.0:

              If (WSAStartup(MAKEWORD(1, 1),&wsaData) != 0) {

                     Fprintf(stderr, “WSAStartupfailed.\n”);

                     Exit(1);

              }

       }

 

       最后,你必须调用WSACleanup().


End。