Changes between Version 15 and Version 16 of wade/linuxProgramming
- Timestamp:
- Jan 20, 2009, 2:50:27 PM (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
wade/linuxProgramming
v15 v16 33 33 * man socket 34 34 * socket 可以視為管線 (pipe) 概念的延伸,只是它不止可以在本機電腦,還可以透過網路來傳輸資料。它與管線最大的不同在於它將程序區分為 server 與 client,可以進行一對一或多對一的資訊傳遞服務。 35 * socket 會在 linux 上產生一個檔案名稱,通常存在 /tmp 中,檔案名稱也就是服務的辨識子埠號 (port #),負責將連接請求繞到正確的伺服器處理程序。[wiki:wade/tcp_port_list]35 * socket() 會在 linux 上產生一個檔案名稱,通常存在 /tmp 中,檔案名稱也就是服務的辨識子埠號 (port #),負責將連接請求繞到正確的伺服器處理程序。[wiki:wade/tcp_port_list] 36 36 2. blind: 37 * socket 命名必須透過 blind 這個 system call 。 37 * socket 命名必須透過 blind() 這個 system call 。而 server 就在這具名的 socket 上等待 client 的連結請求。 38 3. listen: 39 * listen() 這個 system call 是用來產生一個 queue ,接應連接請求。 40 4. accept: 41 * accept() 這個 system call 是讓 server 真正的接受連接請求,當 server 呼叫 accept() 時,會產生一個未具名 socket ,具此不具名的 socket 只用在與 client 的連接上,原本具名的 socket 則繼續用來等待其它客戶端的連結請求,並將連結請求存入 queue 中。 42 5. connect: 43 * client 利用 socket() 產生一個未具名的 socket ,再呼叫 connect() 連接指定 server 具名的 socket 位址。成功後可以使用檔案描述子 (file descriptor) 的方式進行資料雙向溝通。 44 38 45 == File Descriptors == 39 46 可以想成他只是一個 index ,負責檔案的開啟與關閉,是一個 C type int。