93 lines
2.8 KiB
C#
93 lines
2.8 KiB
C#
|
|
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}");
|
|
}
|
|
} |