Pada artikel ini, kita akan membahas tentang membuat handler pemroses paket di server menggunakan teknologi C# dan .NET. Handler ini digunakan untuk memproses paket data yang diterima dari client dan mengambil tindakan berdasarkan informasi yang terkait.
Membuat Class Handler
Untuk membuat class handler, kita perlu mendefinisikan structur data yang akan digunakan untuk parsing packet data. Struktur ini harusextendsclass Structure
yang memberikan metode keamanan untuk parsing data. Contoh struktur yang dibuat adalah MultiNetIpInfo
.
public class MultiNetIpInfo : Structure
{
public string SelectIp { get; set; }
public string DomainName { get; set; }
public string DomainAnalyseIp { get; set; }
public int PingDomainIp { get; set; }
public List<string> ConfigIp { get; set; }
public int[] PingIp { get; set; }
public int Port { get; set; }
public List<byte> Signature { get; set; }
public int Isp { get; set; }
public int Mode { get; set; }
public int[] HistoryPingWeight { get; set; }
public MultiNetIpInfo()
{
// Initialize properties and array values
}
}
Mengimplementasikan Method Write dan Read
Kita juga perlu mengimplementasikan method Write
dan Read
untuk menentukan bagaimana data packet akan diparsing ke variable.
public override void Write(IBuffer buffer)
{
WriteString(buffer, SelectIp);
// ...
}
public override void Read(IBuffer buffer)
{
SelectIp = ReadString(buffer);
// ...
}
Mengaktifkan Handler di Server
Handler yang kita buat harus terintegrasi dengan server. Kita perlu mengaktifkan handler dengan menggunakan method LoadPacketHandler()
di kelas Server
.
public override CS_CMD_ID Cmd => CS_CMD_ID.CS_CMD_MULTI_NET_IPINFO;
public override void Handle(Client client, MultiNetIpInfo req)
{
// Code to handle packet data
}
Prinsip Kerja Project
Project ini menggunakan protocol "TDPU" (Transaction Protocol Data Unit) untuk berkomunikasi dengan client. Kita juga memiliki guideline dan best practice yang harus diikuti saat bekerja pada project ini.
- Git: menggunakan workflow feature-branches untuk mengembangkan fitur baru.
- Workflow: membuat branch baru, push perubahan ke branch tersebut, lalu membuat pull request untuk merge ke branch master.
- Best Practice:
- Tidak menggunakan
Console.WriteLine
dan sejenisnya. Sebagai gantinya, menggunakan logger yang tersedia. - Menggunakan anotasi dokumentasi (https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/documentation-comments) untuk fungsi.
- Mengikuti standar coding C# dan nama variable.
Koneksi lainnya
Terdapat beberapa koneksi lainnya yang ditemukan, namun tidak diwajibkan untuk diimplementasikan. Koneksi-koneksi ini termasuk port 7533/UDP dan 7534/TCP, serta beberapa port lainnya yang terkait dengan anti-cheat dan sistem log.