Toon posts:

[Delphi/C]Asynchronous error met socket communicatie.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Er staat erg veel over socket communicatie en Delphi in de search maar net niet dat wat ik zoek.

Een Cobol programma maakt gebruik van een C programma die de socket communicatie verzorgd. Het C programmaatje ondersteund Winsock en fungeert als client. Op een andere pc op het netwerk heb ik een test programmaatje in Delphi geschreven die een TServerSocket component gebruikt. Deze is ingesteld als stNonBlocking.

Het maken van een verbinding tussen het Cobol en het C programmaatje op de Linux machine en het Delphi programma op een Windows pc lukt. Ik kan ook een tekstbericht sturen van het Cobol programma, via het C programma, naar het Dephi programma op de windows pc. Echter, als ik dan een string terug wil sturen (gewoon een simpele 'OK') dan krijg ik een "Asynchronous error". De OnClientRead event ziet er als volgt uit:

procedure TForm1.srvscktTestClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
mmTest.Lines.Add(Socket.ReceiveText);
srvscktTest.Socket.Connections[0].SendText('OK');
end;

Ik heb het ook geprobeerd met deze aanroep:

procedure TForm1.srvscktTestClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
mmTest.Lines.Add(Socket.ReceiveText);
Socket.SendText('OK');
end;

Dus Socket.SendText in plaats van srvscktTest.Socket.Connections[0].SendText. Dit geeft echter dezelfde error. Heeft iemand een idee van wat ik fout doe? Als ik twee Delphi programmaatjes schrijf en de één fungeert als client en de ander als server, dan kan ik wel meteen een string terug sturen....

[ Voor 3% gewijzigd door Verwijderd op 20-02-2003 07:30 ]


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22:38
Heb je wat meer info mbt welke async error je krijgt?

Zo ff dingen die ik me kan bedenken:

Stop je met receiven ?
Wacht je tot de socket klaar is met receiven?
Wacht je tot de socket klaar is voor verzenden?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Je maakt van Asynchrone communicatie begrijp ik. Sluit je de verbinding misschien te snel? Dat OK nog niet verzonden is voordat je de connectie sluit.

Is het error 10053? Dat geeft aan dat de client gedisconnect is op een andere dan de normale manier. Dit kan natuurlijk voorkomen. Het tonen van de melding kan voorkomen worden door Handle := True te zetten in de OnError.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Ik krijg Asynchronous error 1054. Ik zou dan graag willen weten hoe ik kan zien dat de client klaar is voor het ontvangen van tekst? Moet ik bijvoorbeeld meteen na het verzenden van een packet naar de server, de client direct op recv zetten?

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22:38
Verwijderd schreef op 20 February 2003 @ 09:40:
Ik krijg Asynchronous error 1054.
Ik hoop niet dat je verwacht dat wij die foutcodes uit onze hoofden weten op te dreunen ? :)

Wat is de 'fouttekst' van asyncerror 1054 ?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Topicstarter
Sorry, mijn fout Farlane. Het lijkt echter al opgelost te zijn. Na de verzending naar de server moet ik de client METEEN weer op receive zetten.
Pagina: 1