private static void ServerOnConnected(SocketClientId id) { Console.WriteLine($"User connected with id: {id}"); var packetWriter = new PacketWriter(0x5000); packetWriter.WriteBoolean(true); _server.Send(id, packetWriter); }
public void Disconnect(SocketClientId id) { var socketClient = _socketClients.Find(i => i.Id == id); if (socketClient == null) { throw new SocketServerClientNotFoundException(id); } socketClient.Disconnect(); }
public async Task Send(SocketClientId id, byte[] buffer) { var socketClient = _socketClients.Find(i => i.Id == id); if (socketClient == null) { throw new SocketServerClientNotFoundException(id); } await socketClient.Send(buffer); }
private void SocketServerOnDataReceived(SocketClientId id, byte[] data) { var memoryStream = new MemoryStream(data); var binaryReader = new BinaryReader(memoryStream); while (memoryStream.Position < memoryStream.Length) { var length = binaryReader.ReadUInt16() + 6; memoryStream.Seek(-2, SeekOrigin.Current); var packetBytes = binaryReader.ReadBytes(length); OnDataReceived(id, new PacketReader(packetBytes)); } }
private static void ServerOnDataReceived(SocketClientId id, PacketReader packetReader) { Console.WriteLine($"User sent data: {BitConverter.ToString(packetReader.GetBuffer())} with id: {id}"); if (packetReader.Opcode == 0x2001) { var packetWriter = new PacketWriter(0x2001); packetWriter.WriteAscii("GatewayServer"); packetWriter.WriteBoolean(true); _server.Send(id, packetWriter); } else if (packetReader.Opcode == 0x6100) { var packetWriter = new PacketWriter(0xa100, true); packetWriter.WriteUInt8(1); _server.Send(id, packetWriter); } else if (packetReader.Opcode == 0x6104) { var items = new List <(string title, string content)> { ("welcome to kral emulator", "silkroad scene is shit<br>welcome the <font color = red>kynq</font>"), ("3", "4") }; var packetWriter = new PacketWriter(0xa104, true); packetWriter.WriteUInt8((byte)items.Count); foreach (var item in items) { packetWriter.WriteAscii(item.title); packetWriter.WriteAscii(item.content); packetWriter.WriteUInt16(2019); packetWriter.WriteUInt16(12); packetWriter.WriteUInt16(8); packetWriter.WriteUInt16(21); packetWriter.WriteUInt16(22); packetWriter.WriteUInt16(0); packetWriter.WriteUInt32(0); } _server.Send(id, packetWriter); } }
public SocketServerClientNotFoundException(SocketClientId id) : base($"Failed to find socket client with id: {id}.") { }
private void OnDisconnected(SocketClientId id, SocketClientDisconnectType disconnectType) { Disconnected?.Invoke(id, disconnectType); }
private void OnDataReceived(SocketClientId id, byte[] data) { DataReceived?.Invoke(id, data); }
private void OnConnected(SocketClientId id) { Connected?.Invoke(id); }
private void OnDataReceived(SocketClientId id, PacketReader packetReader) { DataReceived?.Invoke(id, packetReader); }
public SocketClient(Socket socket) { _socket = socket; _buffer = new byte[BufferSize]; Id = SocketClientId.New(); }
private void SocketServerOnDisconnected(SocketClientId id, SocketClientDisconnectType disconnectType) { OnDisconnected(id, disconnectType); }
private void SocketServerOnConnected(SocketClientId id) { OnConnected(id); }
public void Disconnect(SocketClientId id) { _socketServer.Disconnect(id); }
public async void Send(SocketClientId id, PacketWriter packetWriter) { var bytes = packetWriter.GetBytes(); await _socketServer.Send(id, bytes); }
private static void ServerOnDisconnected(SocketClientId id, SocketClientDisconnectType disconnectType) { Console.WriteLine($"User disconnected with id: {id}, disconnectType: {disconnectType}"); }
public bool Equals(SocketClientId other) { return(_id == other._id); }