写在篇首:
--------------------------------------------------------------------------------------
此译文不是标准的一字一句的翻译!
而是作为一个程序员的角度去理解的产物!
有兴趣的朋友可以使用邮箱和我沟通!(非常欢迎你的交流)
我的邮箱: veic_2005#163.com(把#替换为@)
------------------------------------------------------------------完美的分割线--
版权声明:
Beej’s Guide Network to Programming
Using Internet Sockets
Brian “Beej Jorgensen” Hall
beej@beej.us
Version 3.0.14
September 8, 2009
Copyright © 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。