Programmiersprache gesucht

freekster

Cadet 3rd Year
Registriert
Mai 2010
Beiträge
35
Hallo alle zusammen.
habe mir unter Windows nen kleines tool geschrieben was sich mit ICQ Verbindet und nachrichten verarbeiten soll. soll deshalb weil ich das unter windows nur gemacht hab um nen boden und verschtändniss für das ICQ Protokoll zu bekommen uhnd nach login prozedur noch nicht weiter gearbeitet habe. für die die es interessiert, es ist in vb.net geschrieben. da ich das ganze aber auf nem server laufen lassen möchte und mir c/c++ auswelchen gründen auch immer sehr schwer in die birne geht, suche ich ne Programmiersprache die strings mit NULL Bytes über Netzwerk verschicken, empfangen und verarbeiten kann.

würde mich über anregungen und Vorschläge sehr freuen

mfg FrEeKsTeR

P.S.: ich will kein Mono installieren
 
Es gibt diverse fertige Implementierungen für ICQ/OSCAR. Perl, Python, Ruby, Java, ...
 
strings mit null bytes gibt es nicht.

ich würde dir java empfehlen, das lässt sich unter linux und win einsetzen, außerdem gibt es, wie schon erwähnt vorgefertigte lösungen.

und das programmierforum dürfte für eine solche frage wohl geeigneter sein.
 
Würde auf jeden Fall den ICQ-Teil nicht selbst programmieren, da du dann immer nacharbeiten musst wenn das Protokoll mal wieder geändert wird. Setzte da besser auf eine Bibliothek die regelmäßig aktualisiert wird wie z.B. libpurple.
 
hmm also ich hab mal etwas mit Pure Basic rum hantiert und bin auf das problem gestoßen das nen zusammengesetzter string aus ASCII Values der z.b. in der mitte Chr(0) hat nur bis zum besagten NULL Byte gelesen wird, VB.Net war die erste sprache die ich gesehen habe die darüber hinaus lesen und arbeiten kann. vorgefertigte sachen will ich eigendlich nicht nutzen, da ich erstens wissen will wie die ganze sache funktioniert und ich mir selbst sagen können möchte, das hab ich selber gemacht. Java werd ich mir dann evtl mal ansehen.
 
Du kannst in jeder Sprache NULL Bytes verwenden. Das Problem an der Sache ist, dass String-Funktionen wie bspw. strlen nur bis zum ersten NULL Byte gehen, da dort eben der String aufhört. Wenn es sich nun nicht um einen String handelt, sondern um Rohdaten, kannst du natürlich nicht mit String-Funktionen herangehen.
Code:
char b[5];
b[0] = 41;
b[1] = b[2] = b[3] = 0;
b[4] = 42;
Funktioniert ohne Probleme und du kannst auch auf die 5 zugreifen. Einzig wenn du dir den String ausgeben lassen willst, wird nur A ausgegeben, da darauf folgend eben das Stringende erreicht ist.
 
@Yuuri
du hast genau das erfasst was ich meine. problem ist jetzt halt das VB.Net die erste sprache ist die ich gesehen habe, die über NULL Bytes in strings hinweck liest und genau so eine programmiersprache suche ich für Linux. gibt es sowas?
 
Zuletzt bearbeitet:
Geht es nicht um Linux? Da wäre VBS etwas unsinnig.

Letztendlich hängt es davon ab wie der String gespeichert wird, du kannst du auch selbst eine Implementierung schreiben, die einfach die Länge des Strings mitspeichert und sich nicht auf Nullterminierung verlässt.
 
Das nennt sich einfach arbeiten mit binären Daten, und das ermöglicht jede Programmiersprache. Strings sind für ein Netzwerkprotokoll wie ICQ eben ungeeignet, da das Protokoll binär ist, da muss man eben mit Buffern/Arrays arbeiten, und da ist es dann egal, ob ein NULL-Byte drinne vorkommt oder nicht.
 
Ja, kommt halt drauf an welche Operationen darauf gewünscht sind, da kann ja eine Klasse im Stil von "Strings" schon sinnvoll sein.
 
was meinst du denn mit "Null-String"?

Das, was ein Null-String in C ist? Das ist einfach ein char(bzw. Byte)-Array mit allen Werten = 0 darin.

Das kann VB.Net auch - nur nennt man dort sowas nicht String. Dort muss man einfach einen Byte-Array anlegen und ggf vorher verarbeitete Strings konvertieren z.B. mit String.Asc(String).
 
Assembler kann man noch nehmen. Gerade die uralten DOS-Assembler terminieren die Strings mit einem $-Zeichen (QBASIC auch? ^^). Ansonsten kenne ich keine Programmiersprache, bei der Strings nicht mit '\0' terminiert werden. Dass VB das können soll, wundert mich. Ganz sicher, dass das nicht vielleicht ein Bug ist? Wenn nicht, dann muss das ein Überbleibsel aus prähistorischen Zeiten sein oder die String-Länge extra abgespeichert sein, damit er weiß, dass es dahinter noch weitergeht.

Warum muss die Programmiersprache bzw. der Compiler eigentlich so eine spezielle Fähigkeit haben? So ein bisschen Netzwerkprotokoll kann man in jeder Sprache schreiben.
 

Ähnliche Themen

Zurück
Oben