java-Kcp
README auf Englisch
kcp basierend auf der Netty-Version implementiert (einschließlich Implementierung der fec-Funktion)
KCP ist ein schnelles und zuverlässiges Protokoll (rudp), das auf UDP basiert. Es kann die durchschnittliche Verzögerung um 30–40 % und die maximale Verzögerung um das Dreifache reduzieren, allerdings mit einer Verschwendung von 10–20 % der Bandbreite im Vergleich zu TCP.
Maven-Adresse:
< dependency >
< groupId >com.github.l42111996</ groupId >
< artifactId >kcp-base</ artifactId >
< version >1.6</ version >
</ dependency >
Verwendungsmethoden und Parameter
- Beispiel für die Serverseite
- Client-Instanz
- Best Practices
- Viele Informationen
- Kompatibel mit C#, Java-Server, C#-Client
- Es sind Probleme aufgetreten
- Ergebnisse des Leistungstests
- Kompatibel mit kcp-go, einschließlich fec-Kompatibilität
Kompatibilität:
- Kompatibel mit der C-Version kcp
- fec wird basierend auf https://github.com/Backblaze/JavaReedSolomon implementiert
- Perfekt kompatible C#-Version, https://github.com/l42111996/csharp-kcp, um schnell Front-End- und Back-End-Netzwerkbibliotheken für Spiele zu erstellen
Stabilität:
Es handelt sich bereits um eine stabile Version, auf die laut Statistik 5 bis 10 Online-Projekte zugegriffen wurden, darunter Produkte von Tencent, Kuaishou und anderen Unternehmen.
Optimierung:
- Ereignisgesteuert, wobei die Vorteile von Multicore voll ausgeschöpft werden
- Optimieren Sie die Fastack-Logik und reduzieren Sie den Datenverkehr um 10 %
- Optimieren Sie die Prüffunktion.
- Sammlungsiteratoren optimieren.
- Enthält Fec zur Reduzierung der Latenz
- Kommt mit CRC32-Prüfung
- Verwenden Sie das Zeitrad, um die CPU-Auslastung einer großen Anzahl von Verbindungen zu optimieren
- Verwenden Sie Directbuf und Objektpool, keinen GC-Druck
- Verwendung von „conv“ oder „ip+port“ hinzugefügt, um die Eindeutigkeit des Kanals zu bestimmen. Das Spiel empfiehlt die Verwendung von „conv“- und „tcp“-Konfigurationsinformationen
- Wenn die Spielnutzung zunimmt, führt der Wechsel von 4G zu WLAN und andere Export-IP-Änderungen nicht dazu, dass die Verbindung getrennt wird.
Verwandte Informationen
- https://github.com/skywind3000/kcp Original-C-Version von kcp
- https://github.com/xtaci/kcp-go go-Version kcp, mit vielen Optimierungen
- https://github.com/Backblaze/JavaReedSolomon Java Versionfec
- https://github.com/LMAX-Exchange/disruptor Hochleistungsfähige Inter-Thread-Messaging-Bibliothek
- https://github.com/JCTools/JCTools Hochleistungs-Parallelitätsbibliothek
- https://github.com/szhnet/kcp-netty Java-Version eines KCP
- https://github.com/l42111996/csharp-kcp C#-Version kcp basierend auf dotNetty, perfekt kompatibel
kommunizieren
QQ:526167774