1. 程式人生 > >Photon Server的使用(一)

Photon Server的使用(一)

什麼是Photon Server呢?

 Photon Server是一款實時的Socket伺服器和開發框架,快速、使用方便、容易擴充套件,服務端架構在Windows系統平臺上,採用C#語言編寫,Photon Server釋出包括兩個部分,Client SDK ReleaseServer SDK UpdateServer SDK的版本是v2.4.5,而Client SDK的版本是v6.2.0。客戶端SDK提供了多種平臺的開發API,包括DotNet,Unity3D,C/C++等。SDK就是指可以為第三方開發者提供特定的軟體包、軟體框架、硬體平臺、作業系統等建立應用軟體開發工具的集合,並且SDK

還能簡單的為某個程式設計語言提供應用程式介面API的一些檔案。

如何使用Photon Server呢?

首先在https://www.photonengine.com/en/OnPremise/Download中下載伺服器端SDK,需要登入的,就先註冊一個賬號吧。

下載後直接解壓有四個檔案

deploy:主要存放photon的伺服器控制程式和服務端Demo
doc:顧名思義,文件
lib:Photon類庫,開發服務端需要引用的
src-server:服務端Demo原始碼

第一步:配置伺服器端
開啟deploy資料夾,看到包含了不同平臺編譯出的Photon目錄,以“bin_”為字首命名目錄,選擇你的電腦對應的資料夾開啟,看到PhotonControl.exe,執行後,可以在windows右下角看到一個圖示,點選圖示可以看到photon伺服器控制選單;

開啟visual stadio,新建專案,選擇c# 類庫,應用程式名字叫做ChatServer.
完成後,把我們的Class1.cs,改名為ChatServer.cs,作為伺服器端主類.然後在當前專案新增引用,連結到剛才提到的lib資料夾目錄下,新增以下引用:
ExitGamesLibs.dll,Photon.SocketServer.dll,PhotonHostRuntimeInterfaces.dll三個檔案

然後新建一個類:ChatPeer.cs,寫法如下:

    class ChatPeer : PeerBase
    {   //這個用來跟客戶端進行通訊
        public ChatPeer(IRpcProtocol protocol, IPhotonPeer peer)
            : base(protocol, peer)
        {
        }
        protected override void OnDisconnect(PhotonHostRuntimeInterfaces.DisconnectReason reasonCode, string reasonDetail)
        {
            throw new NotImplementedException();
        }
        //當客戶端發起請求的時候呼叫
        protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
        {
        ///這個方法用來給客戶端響應
            Dictionary<byte, object> dict = new Dictionary<byte, object>();
            dict.Add(1,"hm");
       OperationResponse response = new OperationResponse(1,dict);
       SendOperationResponse(response,sendParameters);
        }
    }

ChatServer.cs的寫法:

namespace ChatServer
{   //繼承自ApplicationBase的類,是server的入口程式,也是啟動程式
    class ChatServer : ApplicationBase
    {   //當一個客戶端連線到這個server的時候呼叫
        protected override PeerBase CreatePeer(InitRequest initRequest)
        {
            return new ChatPeer(initRequest.Protocol, initRequest.PhotonPeer);
        }
        //當這個server端啟動時呼叫
        protected override void Setup()
        {
        }
        //當這個server端停止時呼叫
        protected override void TearDown()
        {
        }
    }
}

完成後,在解決方案資源管理器中選中當前專案,開啟屬性,選擇生成選項卡,把輸出路徑改成bin\,然後就生成類庫
然後文字編輯器開啟deploy\bin_Win64\PhotonServer.config配置檔案(我的是win7 64位機器,就選擇這個),新增以下配置:


Name:專案名字
BaseDirectory:根目錄,deploy資料夾下為基礎目錄
Assembly :是在生成的類庫中的bin目錄下與我們專案名稱相同的.dll檔案的名字
Type:是主類的全稱,在這裡是:ChatServer.ChatServer,一定要包括名稱空間
EnableAutoRestart:是否是自動啟動,表示當我們替換伺服器檔案時候,不用停止伺服器,替換後photon會自動載入檔案
WatchFiles和ExcludeFiles
這段程式碼放在<Default><Applications>放這裡</Applications></Default>節點下面
完成後儲存,執行托盤程式deploy\bin_Win64\PhotonControl.exe,
執行它,如果托盤圖示沒有變灰,說明伺服器執行成功。

下面開始編寫客戶端程式碼,首先從官網下載https://www.photonengine.com/en/OnPremise/Download

把Photon-Unity3D_v3-0-1-14_SDK\libs\Release\Photon3DotNet匯入到Vs中,新建

Program.cs

       //得到伺服器的響應
        public void OnOperationResponse(OperationResponse operationResponse)
        {
            Dictionary<byte, object> dict = operationResponse.Parameters;
            object v = null;
            dict.TryGetValue(1,out v);
            Console.WriteLine("Get value from server " + v.ToString());
        }
        public void OnStatusChanged(StatusCode statusCode)
        {
            Console.WriteLine(statusCode);
            switch(statusCode){
                case StatusCode.Connect:
                    isConnected = true;
                    Console.WriteLine("Connecting.....");
                    break;
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            ChatServerListener listener = new ChatServerListener();
            PhotonPeer peer = new PhotonPeer(listener,ConnectionProtocol.Tcp);
            peer.Connect("127.0.0.1:4530", "ChatServer");//連線伺服器
            Console.WriteLine("Connecting.....++");
            while(listener.isConnected == false)
            {
                peer.Service();
            }
            Dictionary<byte, object> dict = new Dictionary<byte, object>();
            dict.Add(1,"username");
            dict.Add(2,"password");
            peer.OpCustom(1,dict,true);
            while(true)
            {
                peer.Service();
            }
        }

然後執行檢視控制檯輸出,若全部輸出則連線成功(其中重要的一點是你的電腦需要配置好IIS服務,打得開127.0.0.1哦)

另注:使用Unity客戶端連線也大同小異了!

相關推薦

Photon Server伺服器端

目錄 1.控制檯應用程式跟MySQL建立連線        新增引用MySql.Data.dll             記得引入名稱空間:using MySql.Data.MySqlClient; static void Main(

Photon Server遊戲伺服器從零開始學習部署第一個伺服器程式

概述 Photon引擎是一款實時的Socket伺服器和開發框架,快速、使用方便、容易擴充套件。 服務端架構在windows系統平臺上,採用C#語言編寫。 客戶端SDK提供了多種平臺的開發API,包括DotNet、Unity3D、C/C++以及ObjC等。

Photon Server的使用

什麼是Photon Server呢?  Photon Server是一款實時的Socket伺服器和開發框架,快速、使用方便、容易擴充套件,服務端架構在Windows系統平臺上,採用C#語言編寫,Pho

Unity3D利用Photon實現實時聯網對戰Photon Server介紹

Photon 是一個實時多人遊戲開發框架,它是快速、精益和靈活的。 Photon伺服器功能強大,能夠滿足一般的中小型網路遊戲的需求,而且開發效率高,所以就稱為了大多數開發者的首選。由於網上關於Photon聯網的介紹內容比較少,現在小義就跟大家分享一下關於Pho

【SQL server初級】SQL索引

定位 統計表 cut 語法分析 man net 程序代碼 源配置 amount         SQL索引【一】(此文章為“數據庫性能優化二:數據庫表優化”附屬文章之一)   SQL索引在數據庫優化中占有一個非常大的比例, 一個好的索引的設計,可以讓你的效率提高幾十甚

SQL Server 2005中的分區表:什麽是分區表?為什麽要用分區表?如何創建分區表?

ima 查詢條件 出錯 數據的操作 之間 方便 如何 oar 意思 如果你的數據庫中某一個表中的數據滿足以下幾個條件,那麽你就要考慮創建分區表了。 1、數據庫中某個表中的數據很多。很多是什麽概念?一萬條?兩萬條?還是十萬條、一百萬條?這個,我覺得是仁者見仁、智者

SQL SERVER的鎖機制——概述鎖的種類與範圍

row 定性 針對 共享 互斥 drop 問題 停止 共享鎖 SQL SERVER的鎖機制系列: SQL SERVER的鎖機制(一)——概述(鎖的種類與範圍) SQL SERVER的鎖機制(二)——概述(鎖的兼容性與可以鎖定的資源) SQL SERVER的鎖機制(三)

在 Windows Server Container 中運行 Azure Storage Emulator:能否監聽自定義地址?

list use contos 域名 嘗試 accounts res conf 是我   我要做什麽? 改 ASE 的監聽地址。對於有強迫癥的我來說,ASE 默認監聽的是 127.0.0.1:10000-10002,這讓我無法接受,所以我要將它改成域名 + 80 端口的方

tomcat中server.xml配置詳解(轉載)

重要 lis 結構 更多 tle 處理請求 服務器端 sta 設置 轉載自:https://www.cnblogs.com/starhu/p/5599773.html tomcat中server.xml配置詳解 Tomcat Server的結構圖如下:(該文件描述了如何

windows Server 2016 網絡服務

windows server 2016 mcse mcsa 網絡基礎 IPv4網絡 TCP4層 IP地址:V4版:32個二進制數,每8位一組,表示網絡中每臺計算機的標識 192.168.1.1 192.168.2.1 分為網絡位和主機位,相同網絡位,不同主機位

Lync Server 2013 標準版部署AD準備

Lync Server 2013 Lync Server 2013 標準 Lync Server 標準版 AD服務器部署完成後,將需要安裝Lync Server 2013 系統的1臺前端服務器加入到域中;初始化服務器:服務器名稱、IP地址、防火墻、Windows補丁。檢查服務器初始化的配置: 服

Exchange Server 2013 部署先決條件

Exchange 2013 部署 ExchangeServer 2013 Exchange 2013 先決條件 將需要安裝Exchange Server 2013 的服務器預先安裝好Windows Server 2012 R2 操作系統,並將操作系統進行初始化:更新Windows 操作系統補丁。1

Windows Server 2016 主域控制器搭建

Windows Server 2016 域控制器搭建 主域控制器 AD DC 基本上微軟產品都需要依附於域控制器做身份認證,接下來我們一起來對Windows Server 2016 進行AD活動目錄功能添加。1.更改服務器IP地址2.修改計算機名稱(重新啟動計算機)3.打開服務器管理器,選

SQL Server 2017 AlwaysOn AG 自動初始化

see 個數 一起 配置 備份 日誌 創建 還原 初始化 技術背景在 SQL Server 2012 和 2014 中,初始化 SQL Server Always On 可用性組中的次要副本的唯一方法是使用備份、復制和還原。SQL Server 2016 引入了用於初始化次

SQL Server進階T-SQL查詢和編程的背景

.com src 編程 server 分享 bubuko 進階 分享圖片 img SQL Server進階(一)T-SQL查詢和編程的背景

Windows Server 2012 搭建FTP伺服器的一些坑

    初衷就是想在雲伺服器上寫程式,為了使本機和雲伺服器之間傳檔案更方便,於是乎搭建FTP伺服器。總結折磨我兩天的一些坑,唉,欲哭無淚啊==     首先從一個已經搭建好的FTP伺服器上下載搭FTP伺服器必須的應用程式:FileZilla,WinRA

Windows Server 2019 的6處變化,提升您的 Windows 容器體驗

出品丨Docker公司(ID:docker-cn)編譯丨小東每週一、三、五,與您不見不散! 目前,有大量的應用程式以 Docker 容器的形式執行在 Windows Server 2016 上,但 Windows 容器一直與 Linux 容器在效能方面存在著一些細小的差距。但是,在已經到來的 W

windows server 常用功能

希望 問題 git 都在 package 調用 參考 windows 功能 最近做了一個windows server 2016的環境,也遇到了很多問題,作為一個新手,又沒有很好的記錄下解決方案,因為寫這篇文章的時間有點晚,因此只能留下一些思路以供參考。 1.作為一個se

SQL Server 索引結構及其使用

SQL Server 索引結構及其使用(一) 作者:freedk 一、深入淺出理解索引結構   實際上,您可以把索引理解為一種特殊的目錄。微軟的SQL SERVER提供了兩種索引:聚集索引(clustered index,也稱聚類索引、簇集索引)和非聚集索引(nonclustered index

Windows Server 2008 學習筆記 活動目錄服務安裝

Windows Server 2008 學習筆記(一) 活動目錄服務安裝 一:更改計算機名稱 滑鼠右擊“計算機”選擇“屬性” 點選“更改設定” 點選“更改” 修改後點選“確定” 點選“確定” 點選“重新啟動” 點選“確定”以重