C#Socket

来源:https://www.cnblogs.com/dfcq/archive/2022/07/25/16454405.html
-Advertisement-
Play Games

一.網路協議 如果要理解Socket,要熟悉TCP/IP即傳輸控制協議/網間協議,定義了主機如何連入網際網路,數據如何在它們之間傳輸的標準。 TCP/IP協議參考模型,把所有的TCP/IP系列協議歸類到四個抽象層中:應用層,傳輸層,網路層,數據鏈路層,每一抽象層建立在低一層提供的服務上,並且為高一層提 ...


 一.網路協議

如果要理解Socket,要熟悉TCP/IP即傳輸控制協議/網間協議,定義了主機如何連入網際網路,數據如何在它們之間傳輸的標準。

TCP/IP協議參考模型,把所有的TCP/IP系列協議歸類到四個抽象層中:應用層,傳輸層,網路層,數據鏈路層,每一抽象層建立在低一層提供的服務上,並且為高一層提供服務。

互聯網為什麼分層?

層與層之間定好規則(就是介面),每一層做好自己的事,層可以內部演化。

協議:規範,遵守的規則

一共分為幾層?5層,下麵具體分析一下這5層

 

 

 

實體層

 物理連接,光纖/電纜等。傳遞的是0和1

鏈接層

 規定一下0和1的解讀方式。

乙太網

  • 大概是一組信號當做數據包,成為幀-Head-data
  • Head:描述信息(發送者---接收者)
  • Data:真實數據
  • 數據必須是網卡到網卡的(每個網卡有Mac地址)
  • 廣播一下,對著區域網的全部網卡都發一遍

互聯網是多個區域網組成的。區域網是子網路。

網路層

  •  解決不同的電腦,在不同的區域網通訊問題。
  • IPV4確定屬於哪個子網,獨立的IP比較貴的。每個電腦都有一個IP地址:192.168.1.1一共32位的
  • 把幀裡面data分成2塊(Head包括IP地址+長度,data真實數據)
  • 幀長度是有限制的,如果超過,會拆成不同的包,每個包都有head和包序號

傳輸層

  • 問題:電腦裡面多個程式都使用網路,幀過來,到底給那個程式?得有個東西,告訴去給那個程式。(埠改閃亮登場了....)
  • 保證:電腦上的某程式的信息,發送到某個電腦上的某個程式。
  • 埠:0~65535,其中0到1023系統用的。保證程式和程式進行交流
  • 主機+埠=套件字(Socket),socket其實就是保證分佈在不同電腦的程式交互,可以做網路應用程式開發
  • UDP協議,把data拆分成head+data(head只放埠)。不保證數據一定會被收到。特點:簡單,可靠
  • TCP協議,數據的可達性,確保數據不丟失,確認過程。複雜版本的UDP。特點:負載低效,抵消更多資源,可靠。

應用層

 http協議舉例,說明data數據裡面的含義。指定data裡面什麼格式,什麼意義。

 

二.網路通訊

推薦一個框架,跨平臺的

中文網站

https://www.supersocket.net/

Supersocket有三大對象:Session,AppServer,Commands

  • Session:每個用戶的連接,就是一個Session
  • AppServer:Socket伺服器的實例
  • Commands:客戶端回發數據的命令

客戶端發的信息格式:CommandName+空格-+參數0+空格+參數1+空格+參數N+\r\n

服務端的處理:CommandName命令類來處理

 

心跳檢測機制:

  • 用來檢測客戶端是否掉線,客戶端線上,間隔時間內伺服器發送一個心跳包,伺服器返回應答。
  • 如果心跳周期內,沒收到,伺服器就認為你下線了

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Java流程式控制制 1.用戶交互Scanner java.util.Scanner是Java5的新特征,我們可以通過Scannner類來獲取用戶的輸入。 基本語法: Scanner s = new Scanner(System.in); 通過Scanner類的next()與nextLine()方法獲取 ...
  • 一: 背景 最近在看 C++ 的右值引用和移動構造函數,感覺這東西一時半會還挺難理解的,可能是沒踩過這方面的坑,所以沒有那麼大的深有體會,不管怎麼說,這一篇我試著聊一下。 二: 右值引用 1. 它到底解決了什麼問題? 在其他編程語言中,很少聽到 右值引用 這個詞,我個人感覺還是 C++ 這個 值類型 ...
  • 引言 今天來談談設計模式中的單例模式,溫故知新,以免生疏。 軟體設計領域的四位世界級大師Gang Of Four (GoF):Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides四人合著了《Design Patterns - Elements o ...
  • 派生類繼承了基類除構造函數和析構函數外的所有數據成員和函數成員。派生類和基類存在一種特殊關係:派生類是一種基類,具有基類的所有功能。面向對象的程式設計利用派生類和基類之間的特殊關係,常常將派生類對象當作基類對象使用,或者用基類來代表派生類,其目的是提高代碼可重用性。由於C++對數據類型一致性要求比較 ...
  • Spring框架是什麼? Spring 是於 2003 年興起的一個輕量級的 Java 開發框架,它是為瞭解決企業應用開發的複雜性而創建的。Spring 的核心是控制反轉(IoC)和麵向切麵編程(AOP)。Spring 是可以在 Java SE/EE 中使用的輕量級開源框架。 Spring 的主要作 ...
  • 1.橋接方法簡介 橋接方法是jdk1.5引入泛型後,為使java泛型方法生成的位元組碼與jdk1.5版本之前的位元組碼相容由編譯器自動生成的。 可用method.isBridge() 判斷method是否是橋接方法,在生成的位元組碼中會有flags標記 ACC_BRIDGE, ACC_SYNTHETIC ...
  • 利用Python實現壓縮一個文件夾 二、知識點 文件讀寫 基礎語法 字元串處理 迴圈遍歷 文件壓縮 三、代碼解析 導入系統包 import platform import os import zipfile # 我還給大家準備了這些資料:Python視頻教程、100本Python電子書、基礎、爬蟲、 ...
  • 在上兩篇文章中已經將播放視頻的功能實現了,今天我就來講解一下如何通過FFmpeg來解析音頻內容,並且用NAudio來進行音頻播放; 效果圖 雖然效果圖是gif並不能 聽到音頻播放的內容,不過可以從圖中看到已經是實現了音頻的播放,暫停,停止已經更改進度的內容了; 一。添加NAudio庫: 一.音頻解碼 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...