11:53:27
2009-04-16
計算機間通訊時需要兩個通訊端點,就像打**時必須有兩台**機;
這個通訊端點是網路層次結構中的傳輸層的實現,包括tcp協議和udp協議;
這個通訊端點向上層提供傳輸層介面,使傳輸層其上的應用層可以使用其介面;
應用層程式包括http、ftp、及自己實現的應用程式均可以使用傳輸層介面實現網路互聯;
在unix/linux將通訊端點實現為核心物件,
構建這個通訊端點使用的方法是:
#include
int socket(int domain,int type,int protocol);
這個方法將在核心中建立乙個通訊端點,其實現了tcp/udp傳輸協議;
返回的乙個稱為套接字描述符的無符號整型變數;
在unix/linux系統中將所有視為檔案;
在程序表項中都會有個程序開啟檔案表,他實際是乙個陣列;
程序開啟乙個檔案,陣列中的每乙個元素對應乙個系統開啟檔案表中的乙個開啟檔案表項,
這個檔案開啟表項中的v_node指標指向乙個v_node結構體,核心都通過這個v_node結構體來訪問檔案;
程序開啟檔案表的陣列索引就稱為檔案描述字,也稱控制代碼;
我們可以通過這個數值來操縱檔案,而底層的實現則完全被隱藏了起來;
那麼unix/linux實現的通訊端點也是乙個檔案;
通過int socket(int domain,int type,int protocol);呼叫返回也是乙個檔案描述字,但是
它比普通的描述字複雜;有多個屬性,所以我們稱為套接字描述符;
有了套接字描述我們操縱底層的通訊端點實現tcp/udp連線通訊;
要注意一點的通訊端點可以有多個套接字描述符,他們都指向同乙個v_node結構體;
只有當所有對同乙個v_node的引用數為0時,才可以銷毀這個通訊端點
Socket學習筆記
public classsocketextends object 此類實現客戶端套接字 也可以就叫 套接字 套接字是兩台機器之間的通訊端點。套接字的實際工作由socketimpl類的例項執行。應用程式通過更改建立套接字實現的套接字工廠可以配置它自身,以建立適合本地防火牆的套接字。一 建構函式 soc...
socket學習筆記
為了理清思路,做一些小筆記 1 socket流程 int socket 產生了該socket的描述符socket description bind 主動呼叫時,把socket與埠繫結,如果不主動呼叫,在linsten和connect時,會自動隨機分配乙個埠。server端在socket和bind之後...
Socket學習筆記
插板插座 網路套接字 在通訊過程中,套接字一定是成對存在的 兩份套接字,c乙個 s乙個 乙個檔案描述符指向乙個套接字 該套接字內部由核心借助兩個緩衝區實現 網路位元組序 大端法 例如udp段格式,位址0 1是16位的源埠號,如果這個埠號是1000 0x3e8 則位址0是0x03,位址1是0xe8,也...