後端文件目錄
分析啓動文件
查看配置文件
分析main.lua文件
上一篇避免通過拼接字符串作爲接收數據的緩衝區,解決辦法是通過一個 Lua 模塊來獲取接收後的完整數據,若沒有完整數據則讀取 socket ,若還沒有完整數據則 sleep 一小會兒,然後再嘗試。 瞭解過 Lua 或用過 skynet 可知,
轉載:https://blog.csdn.net/weixin_33730836/article/details/93725644 注:爲方便理解,本文貼出的代碼部分經過了縮減或展開,與實際skynet代碼可能會有所出入。 作爲一
引言: 一直都是從事客戶端的開發工作,最近抽了點時間想了解一下服務器開發的相關知識,一番博客瞎逛之後,發現了一個不錯的框架,雲風大神的 skynet開源服務器框架,這不僅僅是針對於遊戲服務器開發的框架,更是一個通用的服務器基礎框架。
1 skynet介紹 Skynet 是一個基於C跟lua的開源服務端併發框架,這個框架是單進程多線程Actor模型。是一個輕量級的爲在線遊戲服務器打造的框架。 我在雲風博客的基礎上,把重要的知識點加上具體的example來講解skyn
博主入職做遊戲到現在已經是7個月的時間,框架是skynet,這段時間內,我大多寫的都是遊戲的活動,任務。其中這些東西都是有有效期限制的。 比如,活動是每日重新統計,每日任務是每天重新統計,每週任務是每週一的 00:
詳細註釋: skynet_buffer.h buffer一共定義了3個類型: 內存 buffer 對象 buffer rawpoint buffer buffer主要用於socket發送做緩衝區 在:lua-soc
詳細說明請看: atomic.h twlock.h spinlock.h 原子操作: ATOM_CAS(ptr, oval, nval) //值比較替換:在寫入新值之前, 讀出舊值, //
詳情見: skynet_log.h skynet_log.c FILE * skynet_log_open(struct skynet_context * ctx, uint32_t handle); //打開日誌 void skyn
malloc,calloc,realloc的區別: malloc需要手動計算需要分配的空間大小,分配後不做初始化 calloc不需要手動計算,分配後初始化爲0 realloc重新分配已申請的空間,用來縮/擴容 ssize_t和size_t
點擊登錄 正在上傳…重新上傳取消 觸發登錄事件 正在上傳…重新上傳取消 請求連接 正在上傳…重新上傳取消 監聽 OnReceiveLine 事件 正在上傳…重新上傳取消 正在上傳…重新上傳取消 轉存失敗重新上傳取消 正在上傳…重新
===================安裝some-mmorpg=================== wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz tar -xz
啓動 創建一個socket、timer、monitor線程和n個工作線程。工作線程的個數由啓動時配置的參數決定。 static void start(int thread) { pthread_t pid[thread+3];
https://blog.csdn.net/zxm342698145/article/details/79640535 整篇覆蓋很全 https://www.cnblogs.com/watercoldyi/p/5804743.ht
壓入消息: int skynet_context_push(uint32_t handle, struct skynet_message *message) { //獲取服務cx struct skynet_contex
module初始化 skynet中每個C服務都是一個module。源碼位於skynet_module.c在啓動時設置module的默認查找路徑爲"./cservice/?.so",創建modules實例。 skynet_main.c i