Anmelden

View Full Version : TCP/IP, Active Server Pages



alexku
01-12-03, 10:30
Guten Tag,
bevor ich auf mein Problem eingehe, hier folgendes Szenario:

Unsere iSeries(V5R1M0) kommuniziert über TCP/IP mit dem Internet.

In einem ILE-RPG-Programm wird der Socket-Befehl:
NbrReadIn = Recv(PcSId
:%addr(RqsBuffer)
:RqsBfrLen
:MSG_OOB)
verwendet um Daten über TCP/IP einzulesen.

Die Daten kommen aus folgender Umgebung:

HTML-Client(Browser) ruft ASP-Seite auf IIS-Server(Internet Information Server) auf, diese Seite sendet per TCP über eine COM DLL einen Stream an iSeries <IP-Adresse><Port> und empfängt von der iSeries über eine receive-Methode die Daten.

Und nun das Problem:

Die iSeries empfängt nicht die volle Länge des Datenstromes. Es sieht so aus als ob die Daten vom Client nicht schnell genug ankommen und werden einfach an Stelle z.B. 536 abgeschnitten.
Setze ich aber eine "Bremse" in dem ILR-RPG-Programm von ca. 5 Sekunden ein, so klappt die Übertragung.
Hat jemand auf diesem Gebiet Erfahrungen gemacht?

Gruß alexku

Fuerchau
02-12-03, 10:13
Nun, das Problem ist allgemein bei TCP/IP dass die Daten in Segmenten übertragen werden. Wenn also ein Recv abgesetzt wird, werden die ersten Daten bereits geliefert während die nächsten noch unterwegs sind.
Man hat daher nur die Chance, solange Daten zu lesen bis sie komplett sind.
Und wie stellt man das fest ?
Entweder durch bestimmte Informationen (Länge am Anfang oder Ende-Kennzeichen) oder durch einen Time-Out.