日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

套接字(socket)基本知识与工作原理

發布時間:2023/12/19 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 套接字(socket)基本知识与工作原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

套接字(socket)基本知識與工作原理

一、Socket相關概念

????Socket通常也稱作“套接字”,用于描述IP地址和端口,是一個通信鏈的句柄。(其實就是兩個程序通信用的。)

????SOCKET用于在兩個基于TCP/IP協議的應用程序之間相互通信。最早出現在UNIX系統中,是UNIX系統主要的信息傳遞方式。在WINDOWS系統中,SOCKET稱為WINSOCK兩個基本概念:客戶方和服務方。當兩個應用之間需要采用SOCKET通信時,首先需要在兩個應用之間(可能位于同一臺機器,也可能位于不同的機器)建立SOCKET連接,發起呼叫連接請求的一方為客戶方,接受呼叫連接請求的一方成為服務方。客戶方和服務方是相對的,同一個應用可以是客戶方,也可以是服務方。在客戶方呼叫連接請求之前,它必須知道服務方在哪里。所以需要知道服務方所在機器的IP地址或機器名稱,如果客戶方和服務方事前有一個約定就好了,這個約定就是PORT(端口號)。也就是說,客戶方可以通過服務方所在機器的IP地址或機器名稱和端口號唯一的確定方式來呼叫服務方。在客戶方呼叫之前,服務方必須處于偵聽狀態,偵聽是否有客戶要求建立連接。一旦接到連接請求,服務方可以根據情況建立或拒絕連接。連接方式有兩種,同步方式(Blocking)和(noBlocking).客戶方發送的消息可以是文本,也可以是二進制信息流。當客戶方的消息到達服務方端口時,會自動觸發一個事件(event),服務方只要接管該事件,就可以接受來自客戶方的消息了。

?

二、Socket有兩種類型:

  • ?流式Socket(STREAM)是一種面向連接的Socekt,針對面向連接的TCP服務應用,安全,但是效率低;
  • ?數據報式Socket(DATAGAM):是一種無連接的Socket,對應于無連接的UDP服務應用。不安(丟失,順序混亂,在接受端要分析重排及要求重發),但效率高。

三、Socket一般應用模式(服務端和客戶端)


?

服務端的Socket(至少需要兩個):

  • 一個負責接受客戶端連接請求(但不負責與客戶端通信)
  • 每成功接收到一個客戶端的連接便在服務端產生一個對應的Socket
    • 再接受到客戶端連接時創建。
    • 為每個連接成功的客戶端請求在服務端都創建一個對應的Socket(負責和客戶端通信)。

客戶端的Socket

  • 客戶端Socket
    • 必須指定要連接的服務端地址和端口。
    • 通過創建一個Socket對象來初始化一個到服務端的TCP連接。

?

Socket通信基本流程圖


?

?

Socket的通信過程

服務端:

  • 申請一個Socket
  • 綁定到一個IP地址和一個端口
  • 開啟偵聽,等待接受連接

客戶端:

  • 申請一個Socket
  • 連接服務器(指明IP地址和端口號)

????服務器端接到連接請求后,產生一個新的Socket(端口大于1024)與客戶端建立連接并進行通訊,原偵聽Socket繼續偵聽。

總結

以上是生活随笔為你收集整理的套接字(socket)基本知识与工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。