Gast: Hilfe bei TCP Server/Client

Beitrag lesen

Momentan stehe ich noch bei dem Problem das bei <STDIN> ( ich hab jetzt einfach mal einen Text aus dem Internet kopiert der Zeilenumbrüche enthält) bei diesen besagten Zeilen umbrüchen immer abgeschnitten wird. Das sollte ja eigentlich der chomp() Befehl beheben können, aber so richtig funktioniert das leider noch nicht.

Nein chomp kann das Problem nicht beheben, es kann nur Zeicchen aus einem String entfernen.

Entweder Du liest die Daten zeilenweise ein, also

while ($zeile=<STDIN>) {
   # dies, das und jenes;
}

oder gleich den ganzen Array:

@zeilen=<STDIN>;

oder Du nimmst getc(resource) um die Zeichen eines Datenstroms einzeln zu lesen.
oder Du nimmst read(resource, skalar, 1), das soll sogar schneller sein.

Woran erkennt der Server das Ende des Datenstroms?
Du testest gegen eof oder prüfst ob getc oder read funktioniert haben.

Hoffe, das hilft

fred

Erst mal Vielen Dank für die zahlreichen Lösungsvorschläge. Ich habe jetzt wirklich versucht sämtliche Lösungsansätze zu testen. Leider haben mich alle nicht wirklich weiter gebracht.

Es muss doch serverseitig möglich sein, die durch recv() begrenzte Zeichenanzahl von 1024 irgendwie zu Puffern. Deshalb ist meine Idee das ich diese Zeichen oder was auch immer in Arrayelementen ablege (puffere) und am Ende wieder mit join() zusammensetze und auf dem Server ausgeben lasse so dass auch wirklich der Text oder was auch immer richtig auf dem Server angezeigt wird.

Im Moment lese ich die Daten im Client mit

while ($data=<STDIN>) {  
  print ("Bitte Text eingeben: ");  
  $socket->send($data);  
}

aus und lasse sie zum Server senden, wo dann die besagten Probleme auftreten. :(

Ich bin wirklich langsam am verzweifeln.