Liebe Gäste des Forums
Danke, dass ihr euch hier auf dem inoffiziellen Windev-Forum umschaut. Hier werden Tipps und Hinweise zu der von PC-Soft angebotenen Software Windev besprochen.
Windev ist eine leistungsstarke, sehr umfangreiche Entwicklersoftware für Webseiten, Handys und Rechner verschiedener Betriebssysteme. Mehr unter http://www.windev.com

UDP-Kommunikation

Hier die gesammelten Bemerkungen
Antworten
psp
Junior Member
Beiträge: 32
Registriert: 8. September 2010, 09:28
Kontaktdaten:

UDP-Kommunikation

Beitrag von 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.

Benutzeravatar
BRANDELH
Site Admin
Beiträge: 199
Registriert: 30. Juni 2010, 14:31
Wohnort: Germersheim
Kontaktdaten:

Re: UDP-Kommunikation

Beitrag von 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.

psp
Junior Member
Beiträge: 32
Registriert: 8. September 2010, 09:28
Kontaktdaten:

Re: UDP-Kommunikation

Beitrag von 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.

Antworten