[Ruby] Ich habe einen einfachen Ping-Client erstellt

Überblick

Ich habe einen einfachen Client erstellt, der ICMP-Echoanfragen nur einmal sendet und empfängt. Bevor ich es vergesse, habe ich mir notiert, was ich zum Zeitpunkt der Implementierung gelernt habe und worauf ich geachtet habe.

Lieferbarer Link

https://rubygems.org/gems/simple_ping https://github.com/kuredev/simple_ping

Zweck

Was / Wie zu verwenden

Was du tun kannst

Dinge unmöglich

Verwendungsbeispiel

ping.rb


require "simple_ping"

ping_client = SimplePing::Client.new(src_ip_addr: "192.168.1.100")
puts ping_client.exec(dest_ip_addr: "192.168.1.101") ? "Success!" : "Failed.."

console


> sudo ruby ping.rb
Success!

Implementierungshinweise

mesg, _ = socket.recvfrom(1500)
mesg[21].bytes[0] #=> 0

Die in der empfangenen Echo-Nachricht enthaltenen Daten müssen als Daten in der Echo-Antwortnachricht zurückgegeben werden. Die Kennung und die Sequenznummer werden vom Echoabsender verwendet, um die Echoanforderung mit ihrer Antwort zu verknüpfen. Die Kennung kann verwendet werden, beispielsweise die Portnummer, die von TCP oder UDP zum Identifizieren der Sitzung verwendet wird, oder die Sequenznummer kann bei jeder Echoanforderung erhöht werden. Die Echo-Rückgabeseite gibt den gleichen Wert in der Echo-Antwort zurück. http://srgia.com/docs/rfc792j.html

Referenz

Ich habe mit Ruby verschiedene Sockets gemacht und mit ihnen gespielt. --Qiita https://qiita.com/MikuriyaHiroshi/items/b0a40f5e7b7be1ef327c

[Ruby] Netzwerkprogramm mit RawSocket - Euniclus https://euniclus.com/article/ruby-port-scan/

BasicSocket # send (Ruby 2.7.0 Referenzhandbuch) https://docs.ruby-lang.org/ja/latest/method/BasicSocket/i/send.html

Internet Control Message Protocol - Wikipedia https://ja.wikipedia.org/wiki/Internet_Control_Message_Protocol#ICMP%E3%83%98%E3%83%83%E3%83%80

Konvertieren Sie ASCII-Codes und -Zeichen (ord, chr, bytes, entpacken, Codepunkte) | Makumaku Ruby Notes https://maku77.github.io/ruby/number/ascii-char.html

RFC792(INTERNET CONTROL MESASAGE PROTOCOL) http://srgia.com/docs/rfc792j.html

Recommended Posts

[Ruby] Ich habe einen einfachen Ping-Client erstellt
Ich habe eine einfache Empfehlungsfunktion erstellt.
Ich habe mit Ruby einen riskanten Würfel gemacht
Ich habe eine Ruby-Erweiterungsbibliothek in C erstellt
Ich habe mit Ruby On Rails ein Portfolio erstellt
Ich habe ein einfaches Berechnungsproblemspiel in Java gemacht
[Ruby] Ich habe einen Crawler mit Anemone und Nokogiri gemacht.
Ich habe eine Chat-App erstellt.
Ich habe im Frühjahr einen Restful-Server und -Client erstellt.
Ich habe mit Spring Boot ein einfaches MVC-Beispielsystem erstellt
Ich habe eine shopify App @java erstellt
Ich habe mit Swing eine GUI erstellt
Implementieren Sie den gRPC-Client in Ruby
Ich habe eine passende App erstellt (Android App)
Ich habe ein Tool zur Generierung von package.xml erstellt.
[Android] Ich habe eine Schrittzähler-App erstellt.
[Rails] Ich habe eine einfache Kalender-Mini-App mit benutzerdefinierten Spezifikationen erstellt.
Ich habe ein einfaches Suchformular mit Spring Boot + GitHub Search API erstellt.
Ich habe ein Kalenderproblem mit Ruby versucht
Ich habe verschiedene Funktionen der Fibonacci-Sequenz (Ruby) erstellt.
Ich habe ein Plug-In für IntelliJ IDEA erstellt
Ich habe eine Janken App mit Kotlin gemacht
Ich habe eine Taschenrechner-App für Android erstellt
Ich habe ein neues Java-Bereitstellungstool erstellt
Ich habe eine Janken App mit Android gemacht
Ich habe ein Diff-Tool für Java-Dateien erstellt
Ich habe StringUtils.isBlank gemacht
Ich habe Ruby gestartet
04. Ich habe mit SpringBoot + Thymeleaf ein Frontend gemacht
Ich habe Mosaikkunst mit Pokemon-Bildern gemacht
Java Ich habe versucht, einen einfachen Block zu brechen
Ich habe einen THETA API-Client erstellt, der für die Plug-Entwicklung verwendet werden kann
[Ruby] Ich möchte einen Methodensprung machen!
Ich habe mit Ruby einen Blackjack gemacht (ich habe versucht, Minitest zu verwenden)
Ich habe ein Janken-Spiel in Java (CLI) gemacht.
Ich habe eine Viewer-App erstellt, die PDF anzeigt
Ich habe einen Docker-Container erstellt, um Maven auszuführen
[Rails] Ich habe eine Entwurfsfunktion mit enum erstellt
Ich habe einen API-Client für Nature Remo erstellt
Ich habe eine einfache Grafikbibliothek für Smartphone-Apps erstellt [MP Android Chart Kai]
Ich habe einen LINE Bot mit Rails + Heroku gemacht
Ich habe ein Docker-Image für die japanische Version von SDAPS erstellt
Ich habe ein Check-Tool für das Release-Modul erstellt
Ich habe mein eigenes Instagram-Tool wie Ruby [Ruby] erstellt.
Ich habe eine Methode entwickelt, um nach Premium Friday zu fragen
Ich habe mit WebAssembly einen Zeichnungschat "8bit Paint Chat" erstellt
Ich habe eine Bibliothek erstellt, die in Safari wie ein Tab funktioniert !!
Ich habe eine Bibliothek zum Anzeigen von Tutorials auf Android erstellt.
Ich habe einen Wrapper erstellt, der KNP von Java aus aufruft
Ich habe eine Ruby-Skriptvorlage erstellt, die eine große Datei (sogar 1 Million Zeilen) Zeile für Zeile verarbeitet
Ich habe eine Funktion zum Registrieren von Bildern bei der API in Spring Framework erstellt. Teil 2 (Client Edition)
Ich habe versucht, eine japanische Version der Automatik-Mail von Rails / devise zu erstellen
Hat die Serverseite des Online-Kartenspiels gemacht ⑤
Ich habe eine Entwicklungsumgebung mit Rails6 + Docker + PostgreSQL + Materialise erstellt.
Ich habe einen Interpreter (Compiler?) Mit ungefähr 80 Zeilen in Ruby erstellt.