新建類庫
引用:ExitGamesLibs,Photon.SocketServer,PhotonHostRuntimeInterfaces

ApplicationBase

using chatServer.Properties; using Photon.SocketServer; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace chatServer { /// <summary> /// 繼承applicationBase的類是入口程序,也是啟動程序 /// </summary> public class ChartServer : ApplicationBase { /// <summary> /// 客戶端連接到這個Server端調用 /// </summary> /// <param name="initRequest"></param> /// <returns></returns> protected override PeerBase CreatePeer(InitRequest initRequest) { return new ChartPeerBase(initRequest.Protocol, initRequest.PhotonPeer); } /// <summary> /// Server端啟動時調用 /// </summary> protected override void Setup() { } /// <summary> /// 這個Server端停掉時調用 /// </summary> protected override void TearDown() { } } }

PeerBase

using Photon.SocketServer; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using PhotonHostRuntimeInterfaces; namespace chatServer.Properties { /// <summary> /// 用來和客戶端進行通信 /// </summary> class ChartPeerBase : PeerBase { public ChartPeerBase(IRpcProtocol protocol, IPhotonPeer unmanagedPeer):base(protocol,unmanagedPeer) { } protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail) { throw new NotImplementedException(); } protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) { throw new NotImplementedException(); } } }

設置輸出
在下載好的sdk目錄下新建文件MyChartServer,并在文件下新建bin目錄

項目-chatserver屬性(Alt F7)-生成-輸出路徑為ExitGames-Photon-Server-SDK_v3-4-31-10808deployMyChartServerbin

配置文件
ExitGames-Photon-Server-SDK_v3-4-31-10808deploybin_Win64配置PhotonServer.config文件下

Application Name=”Lite”和”LiteLobby”間加入新的Application,配置如下

<Applications Default="Lite"> <!– Lite Application –> <Application Name="Lite" BaseDirectory="Lite" Assembly="Lite" Type="Lite.LiteApplication" ForceAutoRestart="true" WatchFiles="dll;config" ExcludeFiles="log4net.config"> </Application> <!– ChartServer Application –> <Application Name="ChartServer"//自定義Name BaseDirectory="MyChartServer"//文件目錄,如我的文件在deploy下MyChartServer文件夾下 Assembly="chatServer"//繼承ApplicationBase的類所在命名空間 Type="chatServer.ChartServer"//繼承ApplicationBase的類所在命名空間 類名 ForceAutoRestart="true" WatchFiles="dll;config" ExcludeFiles="log4net.config"> </Application> <!– LiteLobby Application –> <Application Name="LiteLobby" BaseDirectory="LiteLobby" Assembly="LiteLobby" Type="LiteLobby.LiteLobbyApplication" ForceAutoRestart="true" WatchFiles="dll;config" ExcludeFiles="log4net.config"> </Application>

(二)客戶端
新建控制臺程序
引用 Photon3DotNet

using ExitGames.Client.Photon; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PhotonChatServerClient { class ChatServerListener : IPhotonPeerListener { public bool isconnect = false; public void DebugReturn(DebugLevel level, string message) { } public void OnEvent(EventData eventData) { } public void OnOperationResponse(OperationResponse operationResponse) { } public void OnStatusChanged(StatusCode statusCode) { switch (statusCode) { case StatusCode.Connect: isconnect = true; Console.WriteLine("Connect"); 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", "ChartServer");//連接服務器,4530為config文件指定協議所對應的端口號,Chartserver為之前的服務端應用 while (!listener.isconnect)//判斷是否建立連接 { peer.Service();//這個調用完才能向服務器發起請求 } } } }

(三)運行客戶端服務端,完成連接
(四)客戶端發起請求
修改之前的客戶端

using ExitGames.Client.Photon; using System; using System.Collections.Generic; using System.Data.SqlTypes; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PhotonChatServerClient { class ChatServerListener : IPhotonPeerListener { public bool isconnect = false; public void DebugReturn(DebugLevel level, string message) { } public void OnEvent(EventData eventData) { } public void OnOperationResponse(OperationResponse operationResponse) { } public void OnStatusChanged(StatusCode statusCode) { switch (statusCode) { case StatusCode.Connect: isconnect = true; Console.WriteLine("Connect"); 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", "ChartServer");//連接服務器 while (!listener.isconnect) { 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();//發出去 } } } }

(五)服務端響應
修改之前的服務端PeerBase

/// 當客戶端發起請求時調用 /// </summary> /// <param name="operationRequest"></param> /// <param name="sendParameters"></param> protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) { Dictionary<byte, object> dict = new Dictionary<byte, object>(); dict.Add(1,"siki"); OperationResponse response=new OperationResponse(1,dict); SendOperationResponse(response, sendParameters); } }

(六)客戶端獲得服務端的響應

/// <summary> /// 得到服務器端的響應 /// </summary> /// <param name="operationResponse"></param> public void OnOperationResponse(OperationResponse operationResponse) { Dictionary<byte, object> dict = operationResponse.Parameters; object val = null; dict.TryGetValue(1,out val); Console.WriteLine("getserver" val.ToString()); }

(七)unity客戶端
目錄Plugin下引入sdk/lib/Photon3Unity3D.dll

using System.Collections; using System.Collections.Generic; using System.Runtime.CompilerServices; using ExitGames.Client.Photon; using UnityEngine; public class PhotonServerEngine : MonoBehaviour ,IPhotonPeerListener { private PhotonPeer peer; private bool isconnect = false; void Start() { peer = new PhotonPeer(this, ConnectionProtocol.Tcp); peer.Connect("127.0.0.1:4530", "ChartServer");//連接服務器 } void Update() { peer.Service(); } void OnGUI() { if (isconnect) { if (GUILayout.Button("Send")) { Dictionary<byte, object> dict = new Dictionary<byte, object>(); dict.Add(1, "username"); dict.Add(2, "password"); peer.OpCustom(1, dict, true); } } } public void DebugReturn(DebugLevel level, string message) { Debug.Log(level ":" message); } public void OnEvent(EventData eventData) { } public void OnOperationResponse(OperationResponse operationResponse) { Dictionary<byte, object> dict = operationResponse.Parameters; object val = null; dict.TryGetValue(1, out val); Debug.Log("getserver" val.ToString()); } public void OnStatusChanged(StatusCode statusCode) { switch (statusCode) { case StatusCode.Connect: isconnect = true; Debug.Log("Connect"); break; } } }

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯官網:www.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » unity服務器Photon Server學習筆記

登錄

找回密碼

注冊

主站蜘蛛池模板: 国产一二三区在线| 成人精品大片—懂色av| 九九热精品视频免费在线| 精品av无码国产一区二区| 全免费A级毛片免费看无码| 国产精品福利自产拍久久| 日韩一区二区三区av在线| 成人做受视频试看60秒| 国产精品一区在线蜜臀 | 无码人妻丝袜在线视频红杏| 男女爽爽无遮挡午夜视频| 国产成人不卡一区二区| 久久er热在这里只有精品66 | 日本少妇被黑人xxxxx| 亚洲精品一二三四区| 久久无码中文字幕免费影院蜜桃| 国语对白刺激在线视频国产网红| 欧美丰满妇大ass| 国产色无码专区在线观看| 青青青爽在线视频观看| 中文国产成人精品久久不卡| 欧洲中文字幕一区二区| 亚洲欧美v国产一区二区| 人人澡超碰碰97碰碰碰| 国产午夜三级一区二区三| 无套后入极品美女少妇| 亚洲国产午夜理论片不卡| 国产激情一区二区三区午夜| 国产精品亚洲国际在线看| 国产亚洲色视频在线| 在线免费观看毛片av| 黄浦区| 亚洲精品一区久久久久一品av| 免费无码又爽又刺激成人| 国产真人无码作爱免费视频app| 国产美女裸身网站免费观看视频| 成人做受120秒试看试看视频| 亚洲粉嫩av一区二区黑人| gogogo高清在线观看视频中文| 99久久激情国产精品| 成av人片一区二区久久|