Site Announcements

Liebe Gäste des Forums, wir freuen uns, dass ihr zu uns gelangt seid.
Windev ist eine sehr umfangreiche und starke Entwicklerumgebung für Anwendungen unter Windows, Linux und Internetapplikationen inkl. Mobile.
Hier sind Antworten und Anregungen dazu zu finden!
Möchtest du aktiv mitschreiben? Dann melde dich durch Klick auf den Text "Registrieren" hier rechts oberhalb an.

UDP-Kommunikation

Hier die gesammelten Bemerkungen

UDP-Kommunikation

Beitragvon psp » 6. Juli 2011, 14:38

Hallo,

ich habe aktuell ein neues kleines Projekt. Ich habe ein Gerät mit Windows CE 5.0 mit Touchscreen-Bildschirm, LAN und anderen Spielerreien.

Nun wollte ich mit einem kleinen Programm eine erzeugte Buchung mittels UDP an einen PC schicken.

Start Programm:
Code: Alles auswählen
IF SocketCreateUDP("Server", nPort) = False THEN
   Error("Fehler beim Öffnen von UDP-Port "+nPort+" "+ErrorInfo(errMessage))
   RETURN
END


nPort ist 8475

In 2 gestarteten Threads soll die ganze Geschichte bedient werden.

Code: Alles auswählen
ThreadExecute("Senden", threadNormal, "Daten_Senden")
ThreadExecute("Empfangen", threadNormal, "Daten_Empfangen")


Code: Alles auswählen
PROCEDURE Daten_Empfangen()
sReply is string
WHILE SocketExist("Server")
   Log2File("Schleife Datenempfang",cLog)
   sReply = SocketRead("Server", False, 1000)   
   IF sReply <> "" THEN
      Log2File("Datenempfang "+sReply+" "+SocketClientInfo("Server", SocketAddress),cLog)
   ELSE
      Log2File("kein Datenempfang "+SocketClientInfo("Server", SocketAddress),cLog)
   END
END


Code: Alles auswählen
PROCEDURE Daten_Senden()

WHILE SocketExist("Server")
   IF gsCDaten<>"" THEN
      IF SocketWrite("Server", gsCDaten+CRLF, sIP, nPort) = True THEN
         Log2File("Daten gesendet:  "+gsCDaten,cLog)
         gsCDaten=""
      END
   END
END


sIP ist eine definierte IP-Adresse.

Beim Beenden wird wieder alles geschlossen und die Threads vorher beendet. Die positive Nachricht ist, dass versendete Buchungen am Programm am PC auf dem Port ankommen. Die schlechte ist, dass das Programm auf dem PC die Buchung mit einem "OK" beantwortet, aber dies nicht an dem Gerät ankommt. In dem Protoll sehe ich demzufolge

Code: Alles auswählen
Schleife Datenempfang
kein Datenempfang
Schleife Datenempfang
kein Datenempfang
Schleife Datenempfang
kein Datenempfang
Schleife Datenempfang
kein Datenempfang
Daten gesendet:  xyzabc
Schleife Datenempfang
kein Datenempfang
Schleife Datenempfang
kein Datenempfang
Schleife Datenempfang
kein Datenempfang


Nun steht in der Hilfe, dass ich eine "special UDP syntax" verwenden soll. Aber diese kann ich nicht finden, wie sie sich zusammen setzt.
psp
Junior Member
 
Beiträge: 32
Registriert: 8. September 2010, 09:28
Has thanked: 1 time
Have thanks: 0 time

Re: UDP-Kommunikation

Beitragvon BRANDELH » 6. Juli 2011, 15:07

Hi,

also UDP ist - soweit ich das weiß - ein Megaphon das an alle die Nachricht schreit und nicht mit einer Antwort rechnet.
Ich hätte hier angenommen dass TCP die Wahl der Aufgabe ist, da dieses EIN Zielgerät mit den Infos versorgt.
BRANDELH
Site Admin
 
Beiträge: 199
Registriert: 30. Juni 2010, 14:31
Wohnort: Germersheim
Has thanked: 0 time
Have thanks: 2 times

Re: UDP-Kommunikation

Beitragvon psp » 6. Juli 2011, 15:17

Das Problem wird werden, wenn mehrere dieser Geräte auf einen PC los müssen.

Da ist eine zielgerichtete TCP-Kommunikation zu aufwändig, da man mit mehreren Ports jonglieren muss.

Auf der Gegenseite arbeitet ein XBase-Programm, was auf dem Port horchen geht und wenn eine Nachricht kommt, genau dieser antwortet. Das Verschicken der Nachricht wird ohne Fehler und mit der Anzahl der gesendeten Bytes quittiert.
psp
Junior Member
 
Beiträge: 32
Registriert: 8. September 2010, 09:28
Has thanked: 1 time
Have thanks: 0 time


Zurück zu Allgemeine Fragen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron