PhotonServer服务端学习001

一、下载PhotonServer

(1)首先,打开网址:Photon Engine SDKs | Photon Engine

(2)点击下载

(3)鼠标右键解压该文件;

(4)打开C:\Users\yst\Desktop\Photon-OnPremise-Server-SDK_v4-0-29-11263\deploy\bin_Win64\PhotonControl.exe,启动后可在底部任务栏找到。

二、将“最大容量20人”扩充成为“最大容量100人”

(1)下载Multiplayer Game Development Made Easy | Photon Engine

(2)将下载下来的文件放到同级目录:C:\Users\yst\Desktop\Photon-OnPremise-Server-SDK_v4-0-29-11263\deploy\bin_Win64下,然后关闭PhotonControl.exe后,重启之,即可破解为100人容量。

三、创建第一个服务器项目,并设置部署的目录

1.打开VS,创建一个类库(.NET Framework),命名为:MyGameServer; 目标框架的版本为:.NET Framework4.5(打开属性可查看修改);

2.在下载解压的Photon SDK文件夹中添加新的文件夹“MyGameServer”,在MyGameServer文件夹下创建文件夹"bin";

3.鼠标右键选择“属性”——“生成”——“输出路径”——“浏览”——选择“C:\Users\yst\Desktop\Photon-OnPremise-Server-SDK_v4-0-29-11263\deploy\MyGameServer\bin”;

4.鼠标右键“生成”,即可在Photon SDK指定路径下生成MyGameServer.dll;

四、开发ApplicationBase和ClientPee

1.鼠标右键“引用”——“添加引用”,浏览打开“C:\Users\yst\Desktop\Photon-OnPremise-Server-SDK_v4-0-29-11263\lib”,找到ExitGamesLibs.dll,Photon.SocketServer.dll,PhotonHostRuntimeInterfaces.dll;

2.删除“Class1.cs”,创建主类:MyGameServer.cs,创建类:ClientPeer.cs

using Photon.SocketServer;

namespace MyGameServer
{
    //所有的server端,主类都要集成自applicationbase
    public class MyGameServer : ApplicationBase
    {
        //当一个客户端请求连接的时候
        //我们使用peerbase,表示和一个客户端的连接
        protected override PeerBase CreatePeer(InitRequest initRequest)
        {
            return new ClientPeer(initRequest);
        }
        //初始化
        protected override void Setup()
        {
            
        }
        //server端关闭的时候
        protected override void TearDown()
        {
            
        }
    }
}
using Photon.SocketServer;
using PhotonHostRuntimeInterfaces;

namespace MyGameServer
{
    public class ClientPeer:Photon.SocketServer.ClientPeer
    {
        public ClientPeer(InitRequest initRequest):base(initRequest)
        {
            
        }

        //处理客户端断开连接的后续工作
        protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail)
        {
            
        }

        //处理客户端的请求
        protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
        {
            
        }
    }
}

五、部署并启动我们的第一个服务器端应用

1.打开“C:\Users\yst\Desktop\Photon-OnPremise-Server-SDK_v4-0-29-11263\deploy\bin_Win64”下的配置文件:PhotonServer.config;

2.复制MMoDemo的代码段,往代码下方粘贴,然后对该段代码进行修改,修改后如下:

<!-- Instance settings -->
  <MyGameInstance
		MaxMessageSize="512000"
		MaxQueuedDataPerPeer="512000"
		PerPeerMaxReliableDataInTransit="51200"
		PerPeerTransmitRateLimitKBSec="256"
		PerPeerTransmitRatePeriodMilliseconds="200"
		MinimumTimeout="5000"
		MaximumTimeout="30000"
		DisplayName="My Game"
		>

    <!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. -->
    <!-- Port 5055 is Photon's default for UDP connections. -->
    <UDPListeners>
      <UDPListener
				IPAddress="0.0.0.0"
				Port="5055"
				OverrideApplication="MyGame1">
      </UDPListener>
    </UDPListeners>

    <!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. -->
    <!-- Port 4530 is Photon's default for TCP connecttions. -->
    <!-- A Policy application is defined in case that policy requests are sent to this listener (known bug of some some flash clients) -->
    <TCPListeners>
      <TCPListener
				IPAddress="0.0.0.0"
				Port="4530"
				PolicyFile="Policy\assets\socket-policy.xml"
				InactivityTimeout="10000"
				OverrideApplication="MyGame1"
				>
      </TCPListener>
    </TCPListeners>

    <!-- Defines the Photon Runtime Assembly to use. -->
    <Runtime
			Assembly="PhotonHostRuntime, Culture=neutral"
			Type="PhotonHostRuntime.PhotonDomainManager"
			UnhandledExceptionPolicy="Ignore">
    </Runtime>


    <!-- Defines which applications are loaded on start and which of them is used by default. Make sure the default application is defined. -->
    <!-- Application-folders must be located in the same folder as the bin_win32 folders. The BaseDirectory must include a "bin" folder. -->
    <Applications Default="MyGame1">

      <!-- MMO Demo Application -->
      <Application
				Name="MyGame1"
				BaseDirectory="MyGameServer"
				Assembly="MyGameServer"
				Type="MyGameServer.MyGameServer"
				ForceAutoRestart="true"
				WatchFiles="dll;config"
				ExcludeFiles="log4net.config">
      </Application>
      
    </Applications>
  </MyGameInstance>

六、配置PhotonServer中的日志Log

1.鼠标右键“引用”——“添加引用”——浏览(C:\Users\yst\Desktop\Photon-OnPremise-Server-SDK_v4-0-29-11263\lib)——找到log4net.dll、ExitGames.Logging.Log4Net.dll;

2.打开C:\Users\yst\Desktop\Photon-OnPremise-Server-SDK_v4-0-29-11263\src-server\Mmo\Photon.MmoDemo.Server文件夹,找到log4net.config配置文件,复制粘贴到VS中的项目MyGameServer下,将其中的一句“ <file type="log4net.Util.PatternString" value="%property{Photon:ApplicationLogPath}\\MMO.Server.log" />”改为“ <file type="log4net.Util.PatternString" value="%property{Photon:ApplicationLogPath}\\MyGame.Server.log" />”;

3.注意,配置文件log4net.config的属性中,复制到输出目录应选择:始终复制;

MyGameServer.cs:

using Photon.SocketServer;
using ExitGames.Logging;
using ExitGames.Logging.Log4Net;
using log4net.Config;
using System.IO;

namespace MyGameServer
{
    //所有的server端,主类都要集成自applicationbase
    public class MyGameServer : ApplicationBase
    {
        public static readonly ILogger log = LogManager.GetCurrentClassLogger();
        //当一个客户端请求连接的时候
        //我们使用peerbase,表示和一个客户端的连接
        protected override PeerBase CreatePeer(InitRequest initRequest)
        {
            log.Info("一个客户端连接过来了!!!");
            return new ClientPeer(initRequest);
        }
        //初始化
        protected override void Setup()
        {
            //日志的初始化
            log4net.GlobalContext.Properties["Photon:ApplicationLogPath"] = Path.Combine(Path.Combine(this.ApplicationRootPath, "bin_Win64"), "log");
            FileInfo configFileInfo = new FileInfo(Path.Combine(this.BinaryPath, "log4net.config"));
            if(configFileInfo.Exists)
            {
                LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance);//让photon知道
                XmlConfigurator.ConfigureAndWatch(configFileInfo); //让log4net这个插件读取配置文件
            }
            log.Info("Setup Completed!");
        }
        //server端关闭的时候
        protected override void TearDown()
        {
            log.Info("服务器应用关闭了!!!");
        }
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 构建 OPC Server 服务端需要经过以下步骤: 1. 确保拥有 OPC 服务器开发工具包(OPC Server Development Toolkit),该工具包包含了开发 OPC Server 所需的必要库和组件。 2. 创建一个新的 OPC Server 项目。在项目中添加所需的标签(Tags)和变量(Variables),这些标签和变量将会与客户端进行数据交流。 3. 配置 OPC Server 的通信设置。根据需要选择使用 DCOM(分布式组件对象模型)或其他通信协议,以实现与客户端的连接和数据传输。 4. 实现 OPC Server 的功能和逻辑。根据需求编写代码来读取和写入标签和变量的数据,以及处理客户端发送的请求和命令。 5. 配置 OPC Server 的安全设置。根据需要设置访问控制和权限管理,以确保数据的安全性和可信度。 6. 测试和验证 OPC Server 的功能和稳定性。使用 OPC Client 工具或自定义的客户端应用程序来连接和通信,检查数据的准确性和响应性。 7. 部署和启动 OPC Server。将编译好的 OPC Server 部署到目标机器上,配置好运行参数和选项,然后启动服务。 8. 监控和维护 OPC Server。定期检查服务器的运行状态和日志,排查和修复可能存在的问题和故障。 以上是构建 OPC Server 服务端的基本步骤,具体实施时还需要根据不同的开发环境和工具进行适当调整和操作。 ### 回答2: 构建 OPC Server 服务端是为了实现数据采集和共享,并与其他 OPC 客户端进行实时通信。在构建 OPC Server 服务端时,需要完成以下几个步骤: 1. 确定设备和数据源:首先需要明确要连接的设备和数据源,这可以是传感器、仪表、PLC等设备,数据源可以是设备本身产生的数据或者由其他系统提供的数据。 2. 选择合适的 OPC 服务器软件:根据设备和数据源的特点和要求,选择一款合适的 OPC 服务器软件。市面上有很多不同的 OPC 服务器软件可供选择,如KEPServerEX、MatrikonOPC、OPC Factory Server等。 3. 安装和配置 OPC 服务器软件:根据选择的 OPC 服务器软件的安装指南,进行软件的安装和配置。通常情况下,需要指定连接设备和数据源的参数、选择数据传输协议(如OPC DA、OPC UA等)、配置访问权限等。 4. 配置数据点和标签:在 OPC Server 中需要配置数据点和标签,以便与其他 OPC 客户端进行数据交互。数据点对应需要采集或共享的数据,标签则用于标识和组织数据点。根据设备和数据源的不同,可以根据需要配置不同类型的数据点和标签。 5. 进行数据采集和共享:配置完成后,OPC Server 服务端可以开始进行数据采集和共享。数据采集可以通过连接设备和数据源,读取数据并将其传递给 OPC 客户端。共享数据可以将从设备和数据源采集到的数据发布给其他 OPC 客户端,实现实时数据交换和共享。 6. 进行测试和调试:在完成配置和数据采集共享后,需要进行测试和调试,确保 OPC Server 服务端的正常工作。可以使用 OPC 客户端软件连接到 OPC Server,并进行数据读写操作,检查数据是否正常传递和交换。 总之,构建 OPC Server 服务端需要选择合适的软件,进行安装和配置,配置数据点和标签,进行数据采集和共享,并进行测试和调试,以保证其正常工作。这样可以实现数据的稳定采集和共享,提高生产过程的效率和准确性。 ### 回答3: 构建 OPC Server 服务端是在计算机或网络环境中搭建一个运行 OPC Server 的设备或软件。OPC Server 负责将物理设备中的数据和信号转换为 OPC 标准的数据,通过网络传输给 OPC Client。 构建一个 OPC Server 服务端的过程可以分为以下几个步骤: 1. 选择合适的 OPC Server 开发工具:根据需要选择适合的开发工具,比如OPC Foundation 提供的开发工具包OPC Foundation 提供的工具包:OPC Core Components、OPC SDK、OLE for Process Control (OPC) 和 OPC UA。 2. 创建数据模型:根据实际情况定义 OPC Server 具备的数据模型,包括设备类型、变量、属性和方法等。 3. 实现 OPC Server 接口:通过使用相应的开发工具,编写代码实现 OPC Server 接口。这些接口包括:OPC DA (Data Access) 接口、OPC HDA (Historical Data Access) 接口、OPC AE (Alarms and Events) 接口、OPC XML-DA (XML Data Access) 接口等,根据具体需求进行选择。 4. 配置 OPC Server:根据实际情况进行 OPC Server 的参数配置,如端口设置、用户权限、安全策略等。 5. 测试和调试:在构建 OPC Server 服务端之后,进行测试和调试工作,确保 OPC Server 能正常运行、数据可靠。 6. 文档和支持:编写相关文档,提供使用帮助和技术支持,供用户参考和解决问题。 在构建 OPC Server 服务端时,需要考虑以下几个方面:设备所支持的 OPC Server 版本、网络环境的稳定性、安全性和性能要求等。同时还需要注意遵守 OPC 标准和相关规范,确保 OPC Server 能与 OPC Client 正常通信。 构建一个高质量的 OPC Server 服务端,需要充分理解 OPC 技术和相关规范,具备一定的开发经验和技术实力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林枫依依

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值