【unity游戲開發——網絡】套接字Socket的重要API

注意:考慮到熱更新的內容比較多,我將熱更新的內容分開,并全部整合放在【unity游戲開發——網絡】專欄里,感興趣的小伙伴可以前往逐一查看學習。

文章目錄

    • 1、Socket套接字的作用
    • 2、Socket類型與創建
    • 3、核心屬性速查表
    • 4、關鍵方法指南
    • 5、工作流程圖解
    • 6、典型應用場景
  • 專欄推薦
  • 完結

1、Socket套接字的作用

Socket是網絡通信的端點(類似電話插口),為不同設備間的數據傳輸提供通道。在C#中,System.Net.Sockets.Socket類是TCP/IP網絡通信的基礎工具。

想象場景:客戶端與服務端像兩個需要通話的人

  • 📞 Socket就是連接雙方的電話線
  • 📦 數據包是通過電話線傳遞的包裹
  • 📭 IP地址是收件人地址(門牌號)
  • 🚪 端口號是具體收件窗口(門牌號下的房間號)

關鍵要素:

要素說明類比
本機IP+端口你的位置標識你的電話號碼
對方IP+端口通信目標位置對方電話號碼
通信協議數據傳輸規則通話語言(如英語/中文)

管道比喻:Socket像連接客戶端和服務端的透明管道,數據如小球在管道中流動:

  • 發送方從管道入口投入小球
  • 接收方從管道出口取出小球
  • TCP協議保證小球順序到達(可靠管道)
  • UDP協議不保證順序(可能亂序到達)

2、Socket類型與創建

常用通信類型對比

類型協議特點適用場景
流套接字(Stream)TCP可靠連接
數據有序
自動重傳丟失數據
文件傳輸、網頁瀏覽
需要高可靠性的場景
數據報套接字(Dgram)UDP無連接
傳輸快
不保證順序和到達
實時游戲、視頻直播
可容忍少量丟失的場景

構造黃金組合

// TCP套接字(可靠連接)
Socket tcpSocket = new Socket(AddressFamily.InterNetwork,  // 使用IPv4地址SocketType.Stream,          // 流式傳輸ProtocolType.Tcp             // TCP協議
);// UDP套接字(快速傳輸)
Socket udpSocket = new Socket(AddressFamily.InterNetwork,  // IPv4地址SocketType.Dgram,            // 數據報模式ProtocolType.Udp             // UDP協議
);

3、核心屬性速查表

屬性作用示例
Connected檢查連接狀態if(socket.Connected){ ... }
Available可讀取的字節數int dataSize = socket.Available;
LocalEndPoint獲取本機地址+端口IPEndPoint local = (IPEndPoint)socket.LocalEndPoint;
RemoteEndPoint獲取對方地址+端口IPEndPoint remote = (IPEndPoint)socket.RemoteEndPoint;
ProtocolType查看協議類型if(socket.ProtocolType == ProtocolType.Tcp){ ... }

4、關鍵方法指南

服務端必備三步驟

// 1. 綁定地址端口(設置接聽座機)
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 8080); // 監聽所有網卡的8080端口
socket.Bind(endPoint);// 2. 開始監聽(打開電話鈴聲)
socket.Listen(10); // 允許10個等待連接// 3. 接受客戶端連接(接聽電話)
Socket clientSocket = socket.Accept(); // 阻塞直到有客戶端連接

客戶端連接一步到位

// 連接指定服務器(撥打對方電話)
socket.Connect(new IPEndPoint(IPAddress.Parse("192.168.1.100"), 8080));

通用終止操作

// 優雅關閉(先說再見再掛電話)
socket.Shutdown(SocketShutdown.Both); // 停止收發
socket.Close();                       // 釋放資源

5、工作流程圖解

TCP
UDP
創建Socket
類型選擇
Bind+Listen+Accept
直接收發數據
建立連接通道
通過Send/Recv傳輸數據
Shutdown+Close

6、典型應用場景

  1. MMO游戲服務器:使用TCP保證玩家位置同步的可靠性
  2. 實時競技游戲:UDP傳輸快速的位置更新包
  3. 文件傳輸工具:TCP確保文件完整無誤
  4. 視頻會議系統:UDP傳輸即使丟失少量幀也可接受

專欄推薦

地址
【unity游戲開發入門到精通——C#篇】
【unity游戲開發入門到精通——unity通用篇】
【unity游戲開發入門到精通——unity3D篇】
【unity游戲開發入門到精通——unity2D篇】
【unity實戰】
【制作100個Unity游戲】
【推薦100個unity插件】
【實現100個unity特效】
【unity框架/工具集開發】
【unity游戲開發——模型篇】
【unity游戲開發——InputSystem】
【unity游戲開發——Animator動畫】
【unity游戲開發——UGUI】
【unity游戲開發——聯網篇】
【unity游戲開發——優化篇】
【unity游戲開發——shader篇】
【unity游戲開發——編輯器擴展】
【unity游戲開發——熱更新】
【unity游戲開發——網絡】

完結

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果學習過程中遇到任何問題,也歡迎你評論私信找我。

贈人玫瑰,手有余香!如果文章內容對你有所幫助,請不要吝嗇你的點贊評論和關注,你的每一次支持都是我不斷創作的最大動力。當然如果你發現了文章中存在錯誤或者有更好的解決方法,也歡迎評論私信告訴我哦!
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87067.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87067.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87067.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機網絡(二)應用層HTTP協議

目錄 1、HTTP概念 ?編輯2、工作流程?? 3、HTTP vs HTTPS?? 4、HTTP請求特征總結? 5、持久性和非持久性連接 非持久連接(HTTP/1.0)?? ??持久連接(HTTP/1.1)?? 1、HTTP概念 HTTP(HyperText Transfer …

c# IO密集型與CPU密集型任務詳解,以及在異步編程中的使用示例

文章目錄 IO密集型與CPU密集型任務詳解(C#示例)一、基本概念1. IO密集型任務2. CPU密集型任務 二、C#示例1. IO密集型示例1.1 文件操作異步示例1.2 網絡請求異步示例1.3 數據庫操作異步示例 2. CPU密集型示例2.1 基本CPU密集型異步處理2.2 并行處理CPU密…

用lines_gauss的width屬性提取缺陷

自己做了一個圖,這個圖放在資源里了 結果圖是這樣(這里只結算了窄區) 代碼和備注如下 read_image (Image11, C:/Users/Administrator/Desktop/分享/15/11.png) rgb1_to_gray (Image11, GrayImage) invert_image (GrayImage, ImageInvert) thr…

從0到100:房產中介小程序開發筆記(中)

背景調研 為中介帶來諸多優勢,能借助它打造專屬小程序,方便及時更新核實租賃信息,確保信息準確無誤,像房屋的大致地址、租金數額、租賃條件、房源優缺點等關鍵信息都能清晰呈現。還可上傳房屋拍攝照片,這樣用戶能提前…

【AI 時代的網絡爬蟲新形態與防護思路研究】

網絡爬蟲原理與攻擊防護的深度研究報告 網絡爬蟲技術已進入AI驅動的4.0時代,全球自動化請求流量占比突破51%,傳統防御手段在面對高度仿真的AI爬蟲時已顯疲態。基于2025年最新數據,深入剖析網絡爬蟲的基本原理、工作流程、分類與攻擊方式&…

低代碼平臺架構設計與關鍵組件

低代碼平臺的架構設計是其核心能力的關鍵支撐,需要平衡可視化開發的便捷性、生成應用的健壯性與性能、可擴展性以及企業級需求(如安全、多租戶、集成)。以下是一個典型的企業級低代碼平臺架構概覽及其關鍵組件: https://example.…

電商 ERP 系統集成接口指南

電商 ERP 系統的高效運行依賴于與多個業務系統的無縫對接,需要集成的核心接口包括:商品管理、訂單處理、庫存同步、物流配送、客戶管理、財務結算等。這些接口是實現數據互通、業務協同的關鍵橋梁。 一、電商 ERP 系統集成所需接口類型 (一…

Python實現對WPS協作群進行群消息自動推送

前言 本文是該專欄的第59篇,后面會持續分享python的各種干貨知識,值得關注。 相信有些同學在工作或者項目中,都會使用到“WPS協作”作為辦公聊天軟件。如果說,有些項目的監控預警正好需要你同步到WPS協作群,這個時候需要怎么去做呢? 而本文,筆者將基于WPS協作,通過Py…

js嚴格模式和非嚴格模式

好的,這是一個非常基礎且重要的概念。我們來詳細解析一下 JavaScript 中的嚴格模式(Strict Mode)和非嚴格模式(Sloppy Mode)。 可以把它想象成參加一場考試: 非嚴格模式:就像是開卷、不計時的…

板凳-------Mysql cookbook學習 (十一--------1)

第11章:生成和使用序列 11.0 引言 11.1 創建一個序列列并生成序列值 CREATE TABLE insect ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id),name VARCHAR(30) NOT NULL,date DATE NOT NULL,origin VARCHAR(30) NOT NULL); 字段說明 ?id…

Vue3 中 Excel 導出的性能優化與實戰指南

文章目錄 Vue3 中 Excel 導出的性能優化與實戰指南引言:為什么你的導出功能會卡死瀏覽器?一、前端導出方案深度剖析1.1 xlsx (SheetJS) - 輕量級冠軍1.2 exceljs - 功能強大的重量級選手 二、后端導出方案:大數據處理的救星2.1 為什么大數據需…

安卓RecyclerView實現3D滑動輪播效果全流程實戰

安卓RecyclerView實現3D滑動輪播效果全流程實戰 1. 前言 作為一名學習安卓的人,在接觸之前和之后兩種完全不同的想法: 好看和怎么實現 當初接觸到RecyclerView就覺得這個控件就可以把關于列表的所有UI實現,即便不能,也是功能十分強大 放在現在依然是應用最廣的滑動列表控…

電機控制——電機位置傳感器零位標定

在有感FOC算法中電機位置是一個重要的輸入,電機位置傳感器的作用就是測量電機的旋轉角度,通常是輸出sin(Theta)和cos(Theta)兩路模擬信號,根據這兩路模擬信號測得電機旋轉絕對角度。注意傳感器測量的是機械角度,不是電角度。 關于…

生物化學(實驗流程) PCR聚合酶鏈式反應: DNA 凝膠電泳實驗原理 實驗流程方法 實操建議筆記

凝膠電泳是分子生物學中最常用的技術之一,廣泛用于 DNA 片段的可視化、分離與識別。在獲取DNA 凝膠電泳相關設備(電泳設備 & DNA樣品染料 & 凝膠 & 染料)之后,可以考慮進行電泳操作。 整體電泳操作流程(從…

Python應用指南:利用高德地圖API獲取公交+地鐵可達圈(三)

副標題:基于模型構建器的批處理多份CSV轉換為點、線、面圖層 在地理信息系統(GIS)的實際應用中,我們經常需要處理大量以表格形式存儲的數據,例如人口統計數據、興趣點(POI)信息和監測站點記錄等…

每日算法刷題Day38 6.25:leetcode前綴和3道題,用時1h40min

5. 1749.任意子數組和的絕對值的最大值(中等,學習) 1749. 任意子數組和的絕對值的最大值 - 力扣(LeetCode) 思想 1.給你一個整數數組 nums 。一個子數組 [numsl, numsl1, ..., numsr-1, numsr] 的 和的絕對值 為 abs(numsl numsl1 ... numsr-1 nu…

創客匠人視角下創始人 IP 打造的底層邏輯與實踐路徑

在知識付費行業蓬勃發展的當下,創始人 IP 已成為連接用戶與商業價值的核心紐帶。創客匠人創始人老蔣在與行業頭部 IP 洪鑫的對話中揭示了一個關鍵命題:IP 打造的成敗,始于發心與理念的根基。從洪鑫教育中心營收超 6000 萬的案例來看&#xff…

2022/7 N2 jlpt詞匯

気力(きりょく) 清く(きよく) 記録(きろく) 記憶(きおく) 賢い(かしこい) 偉い(えらい) 凄い(すごい) 鋭い&am…

系統性能優化-8 TCP緩沖區與擁塞控制

每個 TCP 連接都有發送緩沖區和接收緩沖區,發送緩沖區存已發送未確認數據和待發送數據,接收緩沖區存接收但是沒有被上層服務讀取的數據。 # cat /proc/net/sockstat sockets: used 1885 TCP: inuse 537 orphan 0 tw 3 alloc 959 mem 10其中 mem 代表當前…

【前端】vue工程環境配置

環境準備(Windows版本) nodejs安裝 (base) PS C:\Users\Administrator> nvm install 18.8.0 (base) PS C:\Users\Administrator> nvm use 18.8.0 Now using node v18.8.0 (64-bit) (base) PS C:\Users\Administrator> npm -v 8.18.0 (base) PS C:\Users\Administrat…