伺服器和客戶端

啟動伺服器

要啟動伺服器,首先需要取得伺服器對象,如下例所示。 伺服器建立後,不會立即建立與客戶端或執行緒池的通信,因此必須透過在建立的物件上呼叫 Start 來運行伺服器。

1. 創建伺服器

m_netServer = Proud::CNetServer::Create();
// 可以使用delete運算子刪除已修復的物件。
delete m_netServer;
circle-exclamation

2. 準備

// 將 ProudNet 進行 include 。
#include “include\ProudNetServer.h”
  
// 在 ProudNet 中,所有物件都被分組到一個名為 Proud 的namespace中。
using namespace Proud;
  
// port 定義
int g_ServerPort = 33334;

3. 啟動伺服器

先建立一個伺服器對象,然後呼叫SetEventSink函數。 這是註冊對像以接收伺服器上發生的事件的回調的過程。 如果將指針傳遞給透過繼承 INetServerEvent 物件建立的對象,伺服器將透過該物件回呼事件。

circle-info

從 C++11 開始,可以使用 lambda 而不是 SetEventSink 來註冊事件。

💡在上面的程式碼範例中,g_eventSink 是使用下列結構建立的物件。

CNetClientInfo物件包含連線的客戶端訊息,CNetClientInfo的成員m_HostID是可以識別每個主機的ID值。

💡C# 中的 NetClientInfo 與 C++ 中的 CNetClientInfo 的作用相同。

4. 解除連接

函數
註釋

Stop

伺服器停止了。 斷開所有連線。

CloseConnection(Client的 HostID)

中斷與對應客戶端的連線。

5. 開始接收客戶端連接

為了接收來自伺服器的客戶端連接,需要在伺服器端準備一個Listening Port和執行緒池。 為此,我們需要建立一個 Server 對象,然後呼叫其 Start 方法。

開始使用客戶端

與伺服器一樣,客戶端也可以在建立物件後連接到伺服器。

1. 創建客戶端

2. 準備

3. 開始

客戶端連接到伺服器時發生的事件

  • 當執行 Connect 時,OnConnectionRequest 到達伺服器,您可以在其中拒絕用戶端嘗試連線。

  • 如果您在 OnConnectionRequest 中接受客戶端連接,則所有連接過程都會完成,並且將從客戶端和伺服器接收事件,如下面的程式碼範例所示。

4. 解除連接


活用

如何使用伺服器chevron-right如何使用客戶端chevron-right

Last updated