PhotonServer初探
来源:互联网 发布:伊藤美诚 知乎 编辑:程序博客网 时间:2024/06/05 05:11
Photon Server是一款实时的Socket服务器和开发框架,快速、使用方便、容易扩展,服务端架构在Windows系统平台上。
1 首先需要下载SDK ,下载后目录如下
deploy:主要存放photon的服务器控制程序和服务端Demo
doc:顾名思义,文档
lib:Photon类库,开发服务端需要引用的
src-server:服务端Demo源代码
这边重点是看deploy目录:里面包含了服务器配置以及启动的exe
下面我们新建一个测试项目:ChatServer
新建一个类,ChatServer。然后在项目添加Photon的相关dll引用(导入其中的类库)ExitGamesLibs.dll,Photon.SocketServer.dll,PhotonHostRuntimeInterfaces.dll三个文件
using Photon.SocketServer;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using PhotonHostRuntimeInterfaces;namespace ChatServer{ class ChatPeer : PeerBase { public ChatPeer(IRpcProtocol irp, IPhotonPeer peer) : base(irp,peer) { } protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail) { throw new NotImplementedException(reasonDetail); Console.WriteLine("my"+reasonDetail); } //客户端发起请求调用 protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) { //throw new NotImplementedException(); Dictionary<byte, object> dictiony = new Dictionary<byte, object>() ; //dictiony = operationRequest.Parameters; dictiony.Add(1, "this is server"); object v = null; // dictiony.TryGetValue(1, out v); dictiony.Add(2,"this is 2 server"); OperationResponse response = new OperationResponse(1, dictiony); // 返回给客户端 SendOperationResponse(response,sendParameters); } }}
类需要继承ApplicationBase。服务器的启动类
using Photon.SocketServer;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ChatServer{ class ChatServer : ApplicationBase { protected override PeerBase CreatePeer(InitRequest initRequest) { // throw new NotImplementedException(); return new ChatPeer(initRequest.Protocol, initRequest.PhotonPeer); } protected override void Setup() { // throw new NotImplementedException(); } protected override void TearDown() { // throw new NotImplementedException(); } }}
完成后,在解决方案资源管理器中选中当前项目,打开属性,选择生成选项卡,把输出路径改成第一张图片的路径(放大deploy中)
项目放来了,下面就是配置文件了
如下
一般修改这几个
服务器搞定了,启动。。。
如果启动失败,注意查看log文件,一般是类写错了。( Type="ChatServer.ChatServer")
下面是客户端:
同样的方法创建,控制台程序,然后添加引用(Photon3DotNet),如上图
客户端代码:
using ExitGames.Client.Photon;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ChatConsoleClient{ class ChatServerListener : IPhotonPeerListener { public bool isConnect = false; public void DebugReturn(DebugLevel level, string message) { //throw new NotImplementedException(); Console.WriteLine(message); } public void OnEvent(EventData eventData) { // throw new NotImplementedException(); Console.WriteLine(eventData.ToString()); } // 跟服务器通信 public void OnOperationResponse(OperationResponse operationResponse) { // throw new NotImplementedException(); Dictionary<byte, object> dictionary = operationResponse.Parameters; object v,v2 = "v2"; dictionary.TryGetValue(1,out v);// kye=>value dictionary.TryGetValue(2, out v2); Console.WriteLine("Get From Server "+v.ToString()+" "+v2.ToString()); } public void OnStatusChanged(StatusCode statusCode) { Console.WriteLine("this is : "+statusCode); // throw new NotImplementedException(); switch (statusCode) { case StatusCode.Connect: isConnect = true; Console.WriteLine("is connected"); break; } } } public class Class1 { static void Main(string[] agrs) { ChatServerListener listener = new ChatServerListener(); PhotonPeer peer = new PhotonPeer(listener, ConnectionProtocol.Tcp); peer.Connect("127.0.0.1:4530", "ChatServer"); Console.WriteLine("is connecting..."); while (!listener.isConnect) { peer.Service(); } // 发消息给服务器 Dictionary<byte, object> dic = new Dictionary<byte, object>(); dic.Add(1,"ly"); dic.Add(2,"123456"); peer.OpCustom(1,dic,true);// 这是异步的过程 while (true) peer.Service(); } }}运行客户端
over
阅读全文
1 0
- PhotonServer初探
- PhotonServer概念
- Photonserver 官方论坛
- PhotonServer介绍
- PhotonServer学习
- PhotonServer配置
- PhotonServer服务器
- PhotonServer 下载地址记录
- PhotonServer MMO游戏开发
- PhotonServer-MyGameServer服务器端
- PhotonServer小案例Demo
- PhotonServer游戏服务器
- PhotonServer游戏服务器【完整版】
- PhotonServer学习笔记(一)
- PhotonServer游戏服务器端(一)
- PhotonServer游戏服务器端(二)
- PhotonServer游戏服务器端(三)
- PhotonServer游戏服务器端(四)
- idea永久破解方法
- day01
- MySQL源码安装与配置
- RunLoop总结:RunLoop的应用场景(三)
- python opencv错误记录
- PhotonServer初探
- 一个ResourceNotFound Exception引发的思考
- c++基础
- MyBatis 入门以及实践
- Kotlin基础概念(一)
- acm_step1.1.5
- 网站压力测试工具 Webbench
- Thinking in java-19 final、finally、finalize关键字
- muduo读书笔记01