回覆列表
  • 1 # 使用者6631984519015

    socket(套接字)

    傳統意義上是類似於檔案描述符的存在形式,是一種抽象的資源定位,即程序埠資源。

    一個程式啟動後,有pid檔案標識鎖定該執行的程式。一個檔案開啟後,在程序中有一個fd標識著它。一個程序佔用了一個埠,並建立相關協議的通訊,由socket標識著它。

    所以socket是什麼,就是一個資源標識,是一個三元組(協議,埠號,IP地址)。

    基於socket的程式設計,指的是在該資源(三元組)的基礎上,封裝對資料的處理。就好比開啟一個檔案後,對檔案的程式設計,如函式f.Close()。

    socket程式設計必備的函式如下:

    Socket():建立一個socket。Bind():繫結地址,即該socket負責哪個資源。Listen():開始監聽。Accept():接收請求。Connect():建立連線Recv()/Send():資料傳送和接收

    客戶端->建立socket->Connect()建立連線->Close()。

    服務端->建立socket->Bind()->Listen()->Accept()接收請求->Close()。

    TCP的三次握手就是發生在【Connect】和【Accept】之間。資料處理交由Recv()/Send()。

  • 2 # daazhu1

    在服務端模式下,bind是將SOCKET與指定的IP地址和埠進行繫結

    這樣,SOCKET就會只接收指定IP地址和指定埠處的資料.

    而在客戶端模式,bind是繫結埠,使資料透過指定埠傳送出去.

  • 中秋節和大豐收的關聯?
  • 新瑞虎3走不平路時駕駛位車門有異響怎麼處理?