2010-11-18 6 views
0

Ich arbeite gerade an einer Software in Ruby, die eine binäre Nachricht aus einer Datei lesen und dann über einen TCP- oder UDP-Socket an ein C-Programm senden soll, das von einem meiner Mitarbeiter geschrieben wurde. Dieses C-Programm muss in der Lage sein, bitweise Operationen an diesen binären Nachrichten durchzuführen, bevor es an mein Programm zurückgeschickt wird, um die gesendeten und empfangenen Daten zu vergleichen.Wie lese ich binäre Daten aus einer Datei und übertrage sie über Ruby-Sockets auf einen Client, der bitweise Operationen ausführt?

Mein aktuelles Problem bezieht sich auf die Art, wie Ruby mit allem als Strings umzugehen scheint. Ich bin relativ neu in der Sprache und bin unsicher, wie ich dieses Problem angehen sollte.

Mein Hauptanliegen ist sicherzustellen, dass der Inhalt meiner Binärnachrichten vor oder während der ersten Übertragung in das C-Programm nicht verändert wird.

Jede Hilfe, die Sie zur Verfügung stellen könnten, würde sehr geschätzt werden.

Danke, Martin

+1

Gibt es da irgendwo eine Frage? –

+0

Probieren Sie es aus und sehen Sie. Wenn Sie eine Frage zu einem bestimmten Verhalten haben, kommen Sie zurück und fragen Sie uns! :-) – Ashe

+0

Wie Arlen sagt, versuchen Sie es zu sehen, und wenn es fehlschlägt, zeigen Sie uns Ihre Arbeit und wir werden versuchen zu helfen. –

Antwort

0

Rubys Class: IO ist ein guter Ausgangspunkt. Lesen Sie den ersten Abschnitt, insbesondere das Flag "b" und wie es sich auf Betriebssysteme bezieht. Danach könnte read oder read_bytes nützlich sein.

Re: "Ruby scheint mit allem als Strings umzugehen". Ruby sieht eine Datei als eine Folge von Bytes, die von der Festplatte gelesen werden. So sagt man Ruby, dass es diese Bytes lesen, verarbeiten und anzeigen soll, die bestimmen, ob es sich bei den Bytes um Textzeilen, Datensätze aus einer Datenbankdatei, einer Bild- oder Tondatei handelt. Sie können Text mit datenorientierten Methoden lesen und dann die Daten als String behandeln. Sie können "binäre" Daten mit String-Lese-Methoden lesen, diese dann im Speicher aggregieren und als Bytes behandeln. Ruby ist nur das Werkzeug, mit dem wir die Bytes manipulieren, aber wir sind diejenigen, die entscheiden, was diese Bytes bedeuten.