客戶端與服務器通信
註冊和使用 Proxy & Stub 通信對象
事件
- 客戶端與服務器通用
事件
註釋
- 服務器
事件
註釋
Last updated
Last updated
// 創建對象。
S2C::Proxy g_S2CProxy;
void main()
{
// 在 Server 描述中創建的
// Server 對象。
CNetServer* srv =
ProudNet::CreateServer();
Svr->AttachProxy(&g_S2CProxy);
// 以下省略
}// HostID 和 RmiContext
// 會自動添加。
// 想要發送到hostID的
// 輸入 Client 的 HostID 值 。
g_S2CProxy.Chat(
hostID,
RmiContext::ReliableSend,
“Send Message”);Client:
Server ▶ Client,在Client中
包含 Stub 對象以接收呼叫 。
// header file 宣言
// 創建Common項目
// 因爲假定, 所以在Common文件夾中
// 包含創建的文件 。
#include "../Common/S2C_stub.h"
// 在 cpp 文件中聲明
#include "../Common/S2C_stub.cpp"#define DECRMI_C2S_Chat bool Chat(
Proud::HostID remote,
Proud::RmiContext &rmiContext,
const Proud::StringA txt)class CS2CStub : public S2C::Stub
{
public:
// 即使變更Protocol,用戶
// 無需修改class,在stub內
// 已處理爲define文。
// 以" DEFRMI_NameSpace_ 函數名"
// 如果有, 在header 中聲明 。
DECRMI_S2C_Chat;
};
CS2CStub g_S2CStub;
// 'DEFRMI_Protocol分類名_protocol名(
// 繼承的類 name'
// 如果設置爲 , 則在 cpp 中聲明 。
DEFRMI_S2C_Chat(CS2CStub)
{
printf(
"[Client] HostID:%d, text: %s”,
remote,
txt);
// 必須回傳 true
return true;
}CNetClient *client
= ProudNet:CreateClient();
client->AttachStub(&g_S2CStub);
// 以下省略CommonC2C.Proxy c2cProxy = new CommonC2C.Proxy();
CommonC2S.Proxy c2sProxy = new CommonC2S.Proxy();Nettention.Proud.NetClient netClient = new Nettention.Proud.NetClient();
netClient.AttachProxy(c2cProxy);
netClient.AttachProxy(c2sProxy);CommonS2C.Stub s2cStub = new CommonS2C.Stub();
CommonC2C.Stub c2cStub = new CommonC2C.Stub();// 設置要處理Stub的delegate。
s2cStub.NotifyLocalHeroViewersGroupID = NotifyLocalHeroViewersGroupID; //<- 設置以下函數。
//同樣創建並配置下面的函數。
s2cStub.RemoteHero_Appear = RemoteHero_Appear;
s2cStub.RemoteHero_Disappear = RemoteHero_Disappear;
c2cStub.P2P_LocalHero_Move = P2P_LocalHero_Move;
...
netClient.AttachStub(s2cStub);
netClient.AttachStub(c2cStub);
...
//根據delegate創建函數。
bool NotifyLocalHeroViewersGroupID(Nettention.Proud.HostID remote, Nettention.Proud.RmiContext rmiContext, Nettention.Proud.HostID localHeroViewersGroupID)
{
...
return true;
}
Nettention.Proud.NetConnectionParam param = new Nettention.Proud.NetConnectionParam();
//匹配 protocolVersion 。
param.protocolVersion.Set(new System.Guid("{0x7b7e9c20,0x309c,0x4364,{0xb4,0x9c,0xc6,0xc,0xcd,0x25,0xaf,0xa0}}"));
//設置要連接的端口。
param.serverPort = 32222;
//設置要連接的IP地址。
param.serverIP = serverAddr;
netClient.Connect(param);