Sharpshooter ist ein zuverlässiges Netzwerkprotokoll, das UDP verwendet.
Es ist ein verbindungsorientiertes Protokoll, genau wie TCP.
Es verfügt nicht über Paketeigenschaften. Sie können versuchen, die Erkennung einiger Protokolleigenschaften zu umgehen und ein P2P-Anwendungstransportprotokoll zu erstellen.
Informationen zu den Anweisungen finden Sie im Beispielverzeichnis. Ich habe zwei einfache Beispiele bereitgestellt.
Wenn Sie TCP in Sharpshooter konvertieren möchten, können Sie https://github.com/soyum2222/sharpshooter-tunel ausprobieren.
| SIZE(4byte) | SQE(4byte) | CMD(2byte) | CONTENT(.......) |
SIZE:
contain SQE CMD CONTENT byte size . but not contain itself byte size .
SQE
sequence number, continuous data package, SQE is continuous.
CMD
0:ack
1:NORMAL
2:first handshack
3:second handshack(response first handshack)
4:third handshack
5:close connction(FIN)
6:response close
7:health check
8:response health
ACK package
| SIZE(4byte) | SQE(4byte) | CMD(2byte) | ackSQE1(4byte)| ackSQE2(4byte) | ackSQE3(4byte) | ... |
The package max length can't over DEFAULT_INIT_PACKSIZE or Sniper.packageSize
When receive ack like :
| SIZE(4byte) | SQE(4byte) | CMD(2byte) | ackSQE1(4byte)| ackSQE2(4byte) | ackSQE3(4byte) |
if ackSQE1 == ackSQE2 and ackSQE1 < ackSQE3 this situation means ackSQE1 to ackSQE3 is continuous number .
eg: receive data : |0|0|0|1|1|10| , this means other party sent ack 1 to 10.
ping.go
pong.go
send_file.go
empfangen_file.go
Versuchen Sie, eine 100-MB-Datei zu übertragen


Die Auslastung hängt vom Netzwerkstatus und der Größe des Sendefensters ab