Process與Socket,Select與Accept關係
Socket只是一個系統函式介面,利用它可對某個埠進行監聽。
Process是在Socket介面監聽某個埠的基礎上建立通訊連線,收發資料並做對應的應用處理,從而形成應用程式。
Socket的英文原義是“孔”或“插座”。通常也稱作"套接字",用於描述IP地址和埠,是一個通訊鏈的控制程式碼。在Internet上的主機一般執行了多個服務軟體,同時提供幾種服務。每種服務都開啟一個Socket,並繫結到一個埠上,不同的埠對應於不同的服務。Socket正如其英文原意那樣,像一個多孔插座。一臺主機猶如佈滿各種插座的房間,每個插座有一個編號,有的插座提供220伏交流電,
有的提供110伏交流電,有的則提供有線電視節目。 客戶軟體將插頭插到不同編號的插座,就可以得到不同的服務。
accept與select區別:
一般經過建立套接字socket()繫結bind()以及listen()之後, 就可以呼叫select檢視socket的狀態和 accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)建立一個全新連線;
判斷是否有客戶端發起連結請求, 一般用select(),然後accept()。
應該先select,可以測一下超時。
如果先accept,select就沒必要了。
還有就是select後,可以測一下資源,如果fd用完了,可以等歸還。
直接的accept,發生這事這個連線就丟了。
一般模型如下
初始化 (socket,bind,listen);
while(1)
{
設定監聽讀寫檔案描述符 (FD_*);
呼叫 select;
如果是傾聽套接字就緒 , 說明一個新的連線請求建立
{
建立連線 (accept);
加入到監聽檔案描述符中去 ;
}
否則說明是一個已經連線過的描述符
{
進行操作 (read 或者 write);
}
}
相關文章
- Socket與TCP/IP的關係TCP
- select for update與autocommit關係MIT
- WebSocket詳解(六):刨根問底WebSocket與Socket的關係Web
- 與if的關係
- 關於v$process與v$session中process的理解Session
- oracle session和process的關係OracleSession
- Cookie與Session 關係CookieSession
- 互動與關係
- 什麼是Socket連線?它與TCP連線有什麼關係TCP
- 關聯關係與依賴關係的區別
- Hadoop與Spark關係HadoopSpark
- Scala與Java的關係Java
- Object與Class的關係Object
- sip與openser的關係
- act與zsh的關係
- SQL與NoSQL(關係型與非關係型)資料庫的區別SQL資料庫
- 資料庫 - 關係代數與關係運算資料庫
- CRM與ERP的整合與關係(轉)
- Excutors 與 ThreadPoolExcutor 的關係與區別thread
- TCP/Socket/HTTP的簡單關係TCPHTTP
- TLS與SSL之間關係TLS
- 行高與字型的關係
- create 與 store中的關係
- oracle datafile 與 object的關係OracleObject
- CQRS與OO思想的關係
- ps 與 svmon之間關係
- AIX aio與listener 的關係AI
- JRE 與 JVM 的關係JVM
- ERP 與 SAP的關係
- 圖片與向量的關係
- GNU與Linux 的關係Linux
- equals與hashCode關係梳理
- Java中類與物件的關係與區別Java物件
- oracle session和process的關係 .轉自CSDNOracleSession
- 從Linux原始碼看Socket(TCP)的acceptLinux原始碼TCP
- 父表修改與外來鍵的關係(主鍵DML與外來鍵的關係)
- ARM 與 STM32 的關係
- JSON 與 JS 物件的關係JSON物件