【unity伺服器配置】PhotonServer2017搭建最新配置教程,Unity親測完美執行!
最近題主在研究PhotonServer如何實現聯網功能時,在搭建伺服器與客戶端時遇到了許多小問題,題主在網上參照了siki老師的photonServer搭建教程,但是遇到的問題卻很多,原因是siki老師所講的版本是幾年前的版本,所以跟現在的新版本是有不同之處的,也由於題主沒有網路通訊的基礎,所以一直折騰了我不少時間,現在終於搞定了整個流程,現在我來為大家分享一下2017年最新的PhotonServer搭建教程。
客戶端 GameDemoChatClient
using ExitGames.Client.Photon;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GameDemoChatClient //客戶端
{
class ChatServerListener : IPhotonPeerListener
{
public bool isConnected = false;
public void DebugReturn(DebugLevel level, string message)
{
}
public void OnEvent(EventData eventData) //返回給客戶端時呼叫
{
//throw new NotImplementedException();
}
public void OnOperationResponse(OperationResponse operationResponse) //得到伺服器端的響應
{
Dictionary<byte, object > dict = operationResponse.Parameters;
object v = null;
dict.TryGetValue(1,out v);
if (v == null)
{
Console.WriteLine("error code:" + operationResponse.ReturnCode + " error message:" + operationResponse.DebugMessage);
}
else
{
Console.WriteLine("從服務端得到資料:" + v.ToString());
}
}
public void OnMessage(object messages)
{
}
public void OnStatusChanged(StatusCode statusCode) //客戶端連線服務端成功時呼叫
{
switch (statusCode)
{
case StatusCode.Connect:
isConnected = true;
Console.WriteLine("連線成功!");
break;
}
}
}
class Program
{
static void Main(string[] args)
{
string localhost = "127.0.0.1:4530";
string ChatServer = "ChatServer";
ChatServerListener listener = new ChatServerListener();
PhotonPeer peer = new PhotonPeer(listener, ConnectionProtocol.Tcp);
peer.Connect(localhost, ChatServer); //連結伺服器
Console.WriteLine("連線伺服器中......");
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();
}
}
}
}
服務端:ChatPeer
using Photon.SocketServer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using PhotonHostRuntimeInterfaces;
using Photon.SocketServer.Rpc;
namespace ChatServer
{
class ChatPeer : ClientPeer //新版本這個繼承ClientPeer
{
public ChatPeer(InitRequest initRequest) : base(initRequest)
{
}
//當客戶端發起請求的時候呼叫
protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
{
Dictionary<byte, object> dict = new Dictionary<byte, object>();
dict.Add(1, "sucess");
OperationResponse response = new OperationResponse(1, dict);
SendOperationResponse(response,sendParameters);
}
protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail)
{
}
}
}
PhotonServer.config配置檔案(重點)
這段程式碼寫在PhotonServer.config的語句塊裡,如圖:
<ChatServer DisplayName="Chat Server">
<TCPListeners>
<TCPListener
IPAddress="0.0.0.0"
Port="4530"
OverrideApplication="ChatServer">
>
</TCPListener>
</TCPListeners>
<Runtime
Assembly="PhotonHostRuntime, Culture=neutral"
Type="PhotonHostRuntime.PhotonDomainManager"
UnhandledExceptionPolicy="Ignore">
</Runtime>
<Applications Default="ChatServer">
<Application
Name="ChatServer"
BaseDirectory="ChatServer"
Assembly="ChatServer"
Type="ChatServer.ChatServer"
></Application>
</Applications>
</ChatServer>
ChatServer
using Photon.SocketServer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ChatServer
{
public class ChatServer : ApplicationBase //抽象類
{
protected override PeerBase CreatePeer(InitRequest initRequest) //客戶端連線我們的服務端時呼叫這個方法
{
return new ChatPeer(initRequest);
}
protected override void Setup()
{
}
protected override void TearDown()
{
throw new NotImplementedException();
}
}
}
配置完config檔案後,啟動PhotonServer,可以看到新的ChatServer的Application連線,啟動成功。
再看看是否能接收客戶端的請求訊息:
測試連線成功!
在這裡,我給大家展示一下常見的啟動錯誤,例如:
這都是因為PhotonServer.config配置檔案不對的問題!,按照我的新版本的配置即可解決問題!
下面進行unity的測試:
首先在PhotonServer的lib檔案下面匯入Photon3Unity3D.dll檔案到unity中。
掛載到任意GameObject上
PhotonServerEngine指令碼
using UnityEngine;
using System.Collections;
using ExitGames.Client.Photon;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
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", "ChatServer");//連線伺服器
}
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;
}
}
}
執行,成功連線到伺服器。
歡迎你關注我的部落格。
相關推薦
【unity伺服器配置】PhotonServer2017搭建最新配置教程,Unity親測完美執行!
最近題主在研究PhotonServer如何實現聯網功能時,在搭建伺服器與客戶端時遇到了許多小問題,題主在網上參照了siki老師的photonServer搭建教程,但是遇到的問題卻很多,原因是siki老師所講的版本是幾年前的版本,所以跟現在的新版本是有不同之處的,
【Primary_wind的專欄】理論不懂就實踐,實踐不會就學理論!
專欄達人 授予成功建立個人部落格專欄
【騰訊雲】自己搭建的騰訊雲伺服器JavaEE環境
轉載地址:https://www.cnblogs.com/qlqwjy/p/8727487.html 感覺很專業的樣子,還沒有看完,更沒有實踐,找個機會實踐一下。 0.安裝SSH登入 1.生成公鑰對 ssh-keygen -t rsa -P '' -P表示密
【Linux伺服器下開發環境搭建】安裝多個tomcat
上篇文章我們簡單介紹瞭如何在Linux環境下安裝單個的tomcat容器。 檢視如可安裝單個tomcat:https://blog.csdn.net/weixin_37519752/article/de
【Spring 系列】1. 搭建和配置Spring與jdbc整合的環境
配置資料來源 <!-- 配置結點,可以使用佔位符 --> <context:property-placeholder location=“classpath:jdbc.properties”/> <bean id="dataSource" class="org.apach
【微信開發】02.搭建一個屬於自己的微信公眾平臺
tro 投票 新浪 關系 blank 訂閱 logs name 開發者 閱讀目錄 【網站開發】在新浪SAE上搭建一個博客 概述 公司年會上同事開發了一個微信企業號,包含了投票,抽獎,祝福墻功能,還開了一個Session,跟我們講了下公司的企業號開發過程和抽獎中獎
【Django Series - 01】以前用 1.6.11,最近用 1.10.8,現在又想換最新版本 2.1.2(探索中...)
Django Series(Django2.1.2 + Anaconda3) (一)安裝並配置 Django 環境 ||| 基於 Django 進行 Web 開發 (二)Django 基礎知識:語法、教程 (三)使用者管理模組:建立使用者、登入、退出 (四)資料的增刪改:使用者提交資
【webpack結合React開發環境配置】React開發環境配置之Webpack結合Babel8.x版本安裝的正確姿勢(Webpack最新版4.x結合Babel8.x環境配置步驟)
1. 安裝cnpmnpm install -g cnpm --registry=https://registry.npm.taobao.org【使用淘寶映象】2. 初始化package.json檔案cnpm init -y3. 安裝webpackcnpm install -d webpack webpack-
【轉載加修改】centos7.4安裝配置Zabbix3.4.8
安裝zabbix之前,請先安裝配置lamp環境。(上篇文章有寫) 參考:https://blog.csdn.net/SilenceViking/article/details/80168715 # vi /etc/selinux/config SELINUX=disa
【大資料安全】Apache Kylin 安全配置(Kerberos)
1. 概述 本文首先會簡單介紹Kylin的安裝配置,然後介紹啟用Kerberos的CDH叢集中如何部署及使用Kylin。 Apache Kylin™是一個開源的分散式分析引擎,提供Hadoop/Spark之上的SQL查詢介面及多維分析(OLAP)能力以支援超大規模資料,最初由eBay Inc. 開發並貢獻至開
【軟體安裝/配置】JDK環境安裝配置(Windows)
文章目錄 JDK安裝教程 JDKAPI地址 path變數和classpath變數的區別 JDK安裝教程 1.JDK下載地址: http://www.oracle.com/technetwork/java/javase/downloads
【MAC日常使用】—JDK安裝及配置
前言 由於工作變動,小編最近吃飯的傢伙也換成了 Mac 筆記本,下面來介紹下Mac本的使用。 正文 一、 安裝JDK 1、 首先,檢視電腦上是否安裝了JDK。 在window
【MAC日常使用】— MAVEN安裝及配置
前言 這次和大家分享下MAC電腦中maven的安裝及配置。 正文 1、下載Maven 2、maven 解壓到安裝目錄 3、開啟終端,輸入vim ~/.bash_profile,編輯bash
【MyBatis原始碼分析】TypeHandler解析屬性配置元素詳述及相關列舉使用高階進階
TypeHandler解析接著看一下typeHandlerElement(root.evalNode("typeHandlers"));方法,這句讀取的是<configuration>下的<typeHandlers>節點,程式碼實現為:private
【C#伺服器開發】之Web Service
1 using System; 2 using System.Data; 3 using System.Configuration; 4 using System.Web; 5 using System.Web.Security; 6 using System.Web.UI; 7 using System.
【Katalon學習六】Katalon IE的配置
為了在IE上執行自動化測試,您需要以下設定: IE 7或以上版本: 對於所有可用區域,啟用保護模式必須相同(選中/未選中)。 要訪問此設定,請在Windows控制面板中選擇Internet選項卡,然後切換到Security選項卡: 此外,必須為IE 10或更高版本禁用增強保護模
【oracle 客戶端】linux下安裝配置oracle客戶端
要在伺服器linux 下連線使用oracle 必須先按裝oracle客戶端。下面來記錄下如何安裝成功。 一、安裝必要的庫gcc依賴 yum install zlib-devel bzip2-devel
【JavaEE學習筆記】Spring_03_IoC的其他配置方式,AOP淺析
Spring_03 A.IoC的其他配置方式 1.xml+Annotation bean package org.wpf.spr_01; import org.springframework
【Python爬蟲】有道翻譯最新爬蟲教程,帶GUI應用介面,2018年3月18日實測可用
最新的有道翻譯爬蟲程式碼,包含應用程式介面,更新於20180318import urllib.request import urllib.parse import json import time import gzip import random import hashli
【以太坊】本地搭建Ethereum私有網路
[email protected]:~$ sudo apt-get install software-properties-common 正在讀取軟體包列表... 完成 正在分析軟體包的依賴關係樹 正在讀取狀態資訊... 完成 software-properties-co