對Socket函式的理解

2021-07-10 08:53:26 字數 910 閱讀 4753

今天看到select()函式,對socket_fd的操作,忽然生疑:socket描述符到底是什麼東西?這篇文章的解釋給了我答案:

socket函式  

功能:指定協議型別  

定義:  

#include <

sys/types.h

>

#include <

sys/socket.h

>

int socket(int family, int type, int protocol);  

返回值  

出錯: -1  

成功: 套介面描述字 (socket file descriptor)(套接字)sockfd   

socket 函式指定了協議族(ipv4、ipv6或unix)和套介面型別(位元組流、資料報或原  

始套介面)。但並沒有指定本地協議位址或遠端協議位址。  

理解socket  

socket使用 unix 檔案描述符 (file descriptor) 和其他程式通訊的方式。  

unix 程式在執行任何形式的 i/o 的時候,程式是在讀或者寫乙個檔案描述符。  

乙個檔案描述符只是乙個和開啟的檔案相關聯的整數。  

這個檔案可能是乙個網路連線,fifo,管道,終端,磁碟上的檔案或者什麼其他  

的東西。unix 中所有的東西是檔案!因此,與 internet 上別的程式通訊的時候,  

套介面描述符 (socket descriptor),然後再通過他來呼叫 send() 和 recv()。  

那麼為什麼不用一般的呼叫 read() 和 write() 來通過套介面通訊?  

簡單的答案是:可以使用一般的函式!  

詳細的答案是:使用 send() 和 recv() 讓你更好的控制資料傳輸。  

**:

Socket中send函式的理解

int send socket s,const char buf,int len,int flags 引數描述 同步socket 的send函式的執行流程如下 如果len大於傳送緩衝區剩餘空間大小 不足放入剩餘傳送緩衝區 send就一直 等待協議把s傳送緩衝區中的資料傳送完 如果len小於傳送緩衝區...

對fork 函式的理解

標頭檔案 include cpp view plain copy pid t fork void 1.建立乙個子程序,失敗返回 1。2.呼叫一次,返回兩次。分別在父子程序中返回子程序的pid和0。利用返回值的不同,可以分別為父子程序編寫不同的處理分支。cpp view plain copy incl...

對Kernel函式的理解

問題 在低維空間線性不可分,需要對映到高維空間使其線性可分。方法 找到這個對映p x,y a,b,c eg p a x2 2 xyc y2 然而在分類器尋找的過程中我們通常需要計算內積 p1,p2 如果遇到上面的問題,樸素的想法是首先找到對映p,然後將p1,p2計算出來,然後計算 p1,p2 但這樣...