DotCloud/Assets/TestDataPublisher.cs

93 lines
2.8 KiB
C#
Raw Normal View History

2024-12-09 16:51:45 +08:00
using System;
using System.Net;
using System.Net.Sockets;
using LiteNetLib;
using Unity.Collections.LowLevel.Unsafe;
using UnityEngine;
public class TestDataPublisher : MonoBehaviour, INetEventListener
{
private NetManager _client;
[SerializeField]
private int _count;
private byte[] _data;
// Start is called before the first frame update
void Start()
{
this._client = new NetManager(this);
this._client.Start();
this._client.Connect("localhost" /* host ip or name */, 9050 /* port */, "SomeConnectionKey" /* text key or NetDataWriter */);
_data = new byte[this._count];
for (var i = 0; i < this._count; i++)
{
_data[i] = (byte)(i % 255);
}
}
// Update is called once per frame
unsafe void Update()
{
if (_client != null)
{
_client.PollEvents();
if (Time.frameCount % 10 == 0)
{
DateTime dateTime = DateTime.Now;
var dest = UnsafeUtility.PinGCArrayAndGetDataAddress(this._data, out var handle);
try
{
UnsafeUtility.MemCpy(dest, &dateTime, sizeof(DateTime));
this._client.SendToAll(this._data, DeliveryMethod.ReliableOrdered);
}
finally
{
UnsafeUtility.ReleaseGCObject(handle);
}
}
}
}
private void OnDestroy()
{
_client.Stop();
}
public void OnPeerConnected(NetPeer peer)
{
Debug.Log($"[{nameof(OnPeerConnected)}]{peer.Address}:{peer.Port}");
}
public void OnPeerDisconnected(NetPeer peer, DisconnectInfo disconnectInfo)
{
Debug.Log($"[{nameof(OnPeerDisconnected)}]{peer.Address}:{peer.Port}");
}
public void OnNetworkError(IPEndPoint endPoint, SocketError socketError)
{
Debug.Log($"[{nameof(OnNetworkError)}]{endPoint.Address}:{endPoint.Port} {socketError}");
}
public void OnNetworkReceive(NetPeer peer, NetPacketReader reader, byte channelNumber, DeliveryMethod deliveryMethod)
{
Debug.Log($"[{nameof(OnNetworkReceive)}]{peer.Address}:{peer.Port}");
reader.Recycle();
}
public void OnNetworkReceiveUnconnected(IPEndPoint remoteEndPoint, NetPacketReader reader, UnconnectedMessageType messageType)
{
Debug.Log($"[{nameof(OnNetworkReceiveUnconnected)}]{remoteEndPoint.Address}:{remoteEndPoint.Port} {messageType}");
}
public void OnNetworkLatencyUpdate(NetPeer peer, int latency)
{
Debug.Log($"[{nameof(OnNetworkLatencyUpdate)}]{peer.Address}:{peer.Port}");
}
public void OnConnectionRequest(ConnectionRequest request)
{
Debug.Log($"[{nameof(OnConnectionRequest)}]{request.RemoteEndPoint.Address}:{request.RemoteEndPoint.Port}");
}
}