ProudNet.Cn
WebsiteProud ConsoleLanguage
  • 🌐ProudNet
    • ProudNet 簡介
    • 下載並安裝
      • ProudNet授權認證方法
      • AMI
    • 項目設定
      • C++
      • C#
      • Mac Xcode
      • Linux
      • Unity3D
        • iOS 建置
      • Unreal Engine 4
      • 運行 PIDL 編譯器
    • 使用 ProudNet
      • 伺服器和客戶端
        • 如何使用伺服器
        • 如何使用客戶端
      • RMI
        • 如何使用RMI
      • PIDL
        • 如何使用PIDL
      • 事件處理
      • 通訊訊息
      • P2P 通訊
        • 如何使用P2P通訊
    • 活用 ProudNet
      • 如何使用它
      • 性能小貼士
    • 在 ProudNet 中使用 DB
      • DB Cache System ver.2
        • DB Cache 理論和理解
        • DB Cache 安裝和網絡設置
        • DB Cache 伺服器和用戶端
        • DB Cache 使用與活用
          • DB Cache 活用法
      • ADO API
      • ODBC API
    • ProudNet 實用程式
  • ProudNet note
    • 技術說明
      • 對主循環的理解
      • 配置服務器防火牆
      • 加密和解密
      • 發生錯誤時的應對事項
      • 錯誤信息列表
      • 同步角色位置
      • 客戶端與服務器通信
      • MiniDump (Error Dump System)
      • [1.6 版本] 服務器間 LAN 通訊器
    • 詞彙表
    • Sample 例題
  • 🌐ProudChat
    • 介紹及使用指南
    • 下載 SDK
      • C++
      • C#
      • Unity3D
      • Unreal Engine 4
Powered by GitBook
On this page
  1. ProudNet
  2. 使用 ProudNet

事件處理

處理事件處理程序

ProudNet 的事件處理是基於委託模式。

客戶端繼承並實作Proud.INetClientEvent類,伺服器繼承並實作Proud.INetServerEvent類別。 建立已實作類別的實例後,必須透過伺服器上的 Proud.CNetServer.SetEventSink 和用戶端上的 Proud.CNetClient.SetEventSink 連線它。

class MyEvent:public INetClientEvent
{
    virtual void OnJoinServerComplete(...) override 
    { 
        // my event handler
        ...
    }
}
 
MyEvent m_myEvent;
myNetServer->SetEventSink(&m_myEvent); 

如果您使用支援C++11的編譯器,

您可以使用 lambda 表達式而不是繼承上面的類別來進行更簡潔的程式設計。

myNetServer->OnJoinServerComplete = [...](...) 
    {
        // my event handler
        ...
    };
myNetServer.OnJoinServerComplete = () =>
    {
        // my event handler
        ...
    };

伺服器中可能發生的典型事件包括“收到客戶端的連線”,客戶端中發生的典型事件包括“與伺服器建立連線”和“P2P成員參與”。

對事件進行日誌處理是絕對必要的。

在技​​術支援過程中,大多數問題的出現​​都是因為不處理Log而很難找到問題的原因。 特別是,請務必記錄包含 errorInfo 作為參數的函數以及以下事件。

  • OnError: 由於 ProudNet 內發生錯誤或使用過程中出現問題而回呼訊息。

  • OnWarning: 回調不嚴重但有潛在問題的資訊。

  • OnInformation: 回調內部情況、追蹤等資訊。

  • OnException: 回調內部Exception錯誤訊息。

使用參數errorInfo的errorInfo->ToString();可輕鬆獲得有關問題的信息。

Last updated 1 year ago

有關何時透過上述過程接收事件回呼的信息,請參閱。

🌐
了解主循環
關聯客戶端上的事件處理程序