1.客户端代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Login : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Network.NetClient.Instance.Init("127.0.0.1", 8000);//ip 和端口
Network.NetClient.Instance.Connect();//链接
SkillBridge.Message.NetMessage msg = new SkillBridge.Message.NetMessage();
msg.Request = new SkillBridge.Message.NetMessageRequest();//初始化请求
msg.Request.firstRequest = new SkillBridge.Message.FirstTestRequest();//初始化请求结构体
msg.Request.firstRequest.Helloworld = "hello world";
Network.NetClient.Instance.SendMessage(msg);//发送消息
}
// Update is called once per frame
void Update()
{
}
}
2.服务器代码
1.服务代码
using Common;
using Network;
using SkillBridge.Message;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GameServer.Services
{
class HelloWorldService:Singleton<HelloWorldService>
{
public void Init()
{
}
public void Start()
{
MessageDistributer<NetConnection<NetSession>>.Instance.Subscribe<FirstTestRequest>(this.OnFirstTestRequest);
}
public void Stop()
{
}
void OnFirstTestRequest(NetConnection<NetSession> sender,FirstTestRequest request)
{
Log.InfoFormat("OnFirstTestRequest: HelloWorld:{0}", request.Helloworld);
}
}
}
2.修改PROTO,使用PROTOBU工具进行生成.cs消息协议文件。
3.服务器主程序初始化并启动设定服务
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
using GameServer.Network;
using System.Configuration;
using System.Threading;
using Network;
using GameServer.Services;
//using GameServer.Managers;
namespace GameServer
{
class GameServer
{
NetService network;
Thread thread;
bool running = false;
public bool Init()
{
int Port = Properties.Settings.Default.ServerPort;
network = new NetService();
network.Init(Port);
HelloWorldService.Instance.Init();
thread = new Thread(new ThreadStart(this.Update));
return true;
}
public void Start()
{
network.Start();
HelloWorldService.Instance.Start();
running = true;
thread.Start();
}
public void Stop()
{
running = false;
thread.Join();
network.Stop();
}
public void Update()
{
while (running)
{
Time.Tick();
Thread.Sleep(100);
//Console.WriteLine("{0} {1} {2} {3} {4}", Time.deltaTime, Time.frameCount, Time.ticks, Time.time, Time.realtimeSinceStartup);
}
}
}
}