52 lines
1.8 KiB
C#
52 lines
1.8 KiB
C#
using System.Net;
|
|
using System.Text;
|
|
using SystemX.Core.Communication;
|
|
using WebApi.Project.UniqueKeyApi.Socket.Object;
|
|
using WebApi.Project.UniqueKeyApi.Socket.Packet;
|
|
|
|
namespace WebApi.Project.UniqueKeyApi.Socket.Session
|
|
{
|
|
public class ClientSession : PacketSession
|
|
{
|
|
public Client Client { get; set; }
|
|
public int SessionId { get; set; }
|
|
|
|
public void Send(ArraySegment<byte> packet, EnumMessageId resonseMessageId)
|
|
{
|
|
LogXnet.WriteLine($"Send:{Encoding.UTF8.GetString(packet)}", LogXLabel.SOCKET);
|
|
|
|
ushort size = (ushort)packet.Count;
|
|
byte[] sendBuffer = new byte[size + 4];
|
|
Array.Copy(BitConverter.GetBytes((ushort)(size + 4)), 0, sendBuffer, 0, sizeof(ushort));
|
|
Array.Copy(BitConverter.GetBytes((ushort)resonseMessageId), 0, sendBuffer, 2, sizeof(ushort));
|
|
Array.Copy(packet.ToArray(), 0, sendBuffer, 4, size);
|
|
Send(new ArraySegment<byte>(sendBuffer));
|
|
}
|
|
|
|
public override void OnConnected(EndPoint endPoint)
|
|
{
|
|
LogXnet.WriteLine($"OnConnected:{endPoint}", LogXLabel.SOCKET);
|
|
Client = ObjectManager.Instance.Add<Client>();
|
|
{
|
|
Client.Session = this;
|
|
}
|
|
}
|
|
|
|
public override void OnRecvPacket(ArraySegment<byte> buffer)
|
|
{
|
|
LogXnet.WriteLine($"OnRecvPacket:{Encoding.UTF8.GetString(buffer)}", LogXLabel.SOCKET);
|
|
PacketManager.Instance.OnRecvPacket(this, buffer);
|
|
}
|
|
|
|
public override void OnDisconnected(EndPoint endPoint)
|
|
{
|
|
LogXnet.WriteLine($"OnDisconnected:{endPoint}", LogXLabel.SOCKET);
|
|
}
|
|
|
|
public override void OnSend(int numOfBytes)
|
|
{
|
|
//Console.WriteLine($"Transferred bytes: {numOfBytes}");
|
|
}
|
|
}
|
|
}
|