寫在篇首:
--------------------------------------------------------------------------------------
此譯文不是標准的一字一句的翻譯!
而是作為一個程序員的角度去理解的產物!
有興趣的朋友可以使用郵箱和我溝通!(非常歡迎你的交流)
我的郵箱: veic_2005#163.com(把#替換為@)
------------------------------------------------------------------完美的分割線--
版權聲明:
Beej’s Guide Network to Programming
Using Internet Sockets
Brian “Beej Jorgensen” Hall
[email protected]
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。
摘自 xiaobin_HLJ80的專欄