Musst davor eine Nummer z.B.: 0 angeben.
Man kann scheinbar mehrere Server öffnen.
ReceiveNetworkData()
-
- Beiträge: 713
- Registriert: 22.03.2005 00:29
- Computerausstattung: Computer und Strom vorhanden
- Wohnort: LK Wolfenbüttel
Also dieser Code überprüft zwar an sich nichts, aber er läuft ohne abzuschmieren, egal ob der Buffer kleiner oder größer der gesendeten Daten ist.
Also wirst du wohl irgendwo was falsch an deiner Speicherverwaltung machen(Vermutung).
Und die Frage aus deinem ersten Beitrag beantwortest du fast selber.
die Variable "Datenmenge" gibt genau die Datenmenge zurück die empfangen wurde.
if Datenmenge = # laenger
;es sind (wahrscheinlich) noch daten zum auslesen da
endif
Wenn du nicht weißt ob Daten anliegen oder nur genau reinpaßten muß du einfach receive... nochmal aufrufen.
Ich mache das ganz einfach in der "Haupschleife" die auch dann die Daten ausliest, wenn vorher datenmenge=#laenge war. dazu nutze ich einfach eine variable als schalter.
mich verwirren aber noch diese "0" (NULL) im createserver. und es soll ja noch "flags" geben, also für UDP usw. aber WO und WIE man die einsetzt habe ich noch nicht gefunden. Auch nicht ob und wie sich die Datenverarbeitung der Netzwerkfunktionen wohl ändert wenn mehrere Server laufen können (wie ich vermute).
[edit]
Gruß
Toshy
Also wirst du wohl irgendwo was falsch an deiner Speicherverwaltung machen(Vermutung).
Und die Frage aus deinem ersten Beitrag beantwortest du fast selber.
Wie kriege ich dann, wenn Datenmenge=#Laenge herraus ob noch Daten da sind, oder exakt #Laenge Bytes empfangen wurden?
Code: Alles auswählen
Datenmenge = ReceiveNetworkData(EventClientNumber(), DatenBuffer, #Laenge)
if Datenmenge = # laenger
;es sind (wahrscheinlich) noch daten zum auslesen da
endif
Wenn du nicht weißt ob Daten anliegen oder nur genau reinpaßten muß du einfach receive... nochmal aufrufen.
Ich mache das ganz einfach in der "Haupschleife" die auch dann die Daten ausliest, wenn vorher datenmenge=#laenge war. dazu nutze ich einfach eine variable als schalter.
Code: Alles auswählen
InitNetwork()
Debug CreateNetworkServer(1,7777)
;#Laenge = 2
#Laenge = 6
DatenBuffer.l = AllocateMemory(#Laenge)
id.l
servernr.l
;ConnectionID.l = OpenNetworkConnection("192.168.1.102", 7777)
ConnectionID.l = OpenNetworkConnection("127.0.0.1", 7777)
Debug ConnectionID
Repeat
servernr = EventServerNumber()
Ergebnis = NetworkServerEvent()
id = EventClientNumber()
If id > 0
Datenmenge = ReceiveNetworkData(id, DatenBuffer, #Laenge)
Debug "Datenmenge:" + Str( Datenmenge )
EndIf
Delay (1000)
Debug "servernr:" + Str( servernr.l )
Debug "EventClientNumber:" + Str(id) + " : " + Str( send )
send = SendNetworkString(ConnectionID, "test")
ForEver
[edit]
Gruß
Toshy
-
- Beiträge: 713
- Registriert: 22.03.2005 00:29
- Computerausstattung: Computer und Strom vorhanden
- Wohnort: LK Wolfenbüttel
wäre aber nur vermutet. und wenn, dann muß man ja auch wohl die netzwerkfunktionen anders nutzen. UDP funktioniert ja anders als TCP. man kann bei udp ja nicht über die gleich leitung einfach was zurücksenden sonder muß die verbindung wohl selber aufbauen. nur ne vorgegebene rückantwort ist glaube ich möglich.
aber mit UDP habe ich keine Ahnung, nur so nebenbei mal was gelesen.
unabhängig davon habe ich bisher nur ein oder zweimal was im engslichen Forum gesehen wo der Parameter verwendet wird, da wurde aber bis Parameter 3 gegangen. muß ich nicht verstehen.
Ob es also die Anzahl der Server ist oder ein Flag ist nicht wirklich bekannt. Aber da man nun "EventServerNumber()" hat, denke ich das es wohl irgendwie mehr server geben kann. Was man dann aber macht oder wo man den UDP-Flag einbaut...? Keine Ahung!
[edit]
Parameteranzeige? Was ist das? ich nutze jaPBe(noch nicht die aktuelle "Beta") und wo soll das denn angezeigt werden? Habe ich noch nichts von gesehen.
aber mit UDP habe ich keine Ahnung, nur so nebenbei mal was gelesen.
unabhängig davon habe ich bisher nur ein oder zweimal was im engslichen Forum gesehen wo der Parameter verwendet wird, da wurde aber bis Parameter 3 gegangen. muß ich nicht verstehen.
Ob es also die Anzahl der Server ist oder ein Flag ist nicht wirklich bekannt. Aber da man nun "EventServerNumber()" hat, denke ich das es wohl irgendwie mehr server geben kann. Was man dann aber macht oder wo man den UDP-Flag einbaut...? Keine Ahung!
[edit]
Parameteranzeige? Was ist das? ich nutze jaPBe(noch nicht die aktuelle "Beta") und wo soll das denn angezeigt werden? Habe ich noch nichts von gesehen.
Ich mein diese Statusleiste da unten, die einem die Parameter zu einer Prozedur und Infos anzeigt. Gibt es doch auch bei JaPBe.
Achja...
Ich denke mein Problem ist gelöst und ich hatte nur einen kleinen Fehler in meinem Servercode.
Achja...
Ich denke mein Problem ist gelöst und ich hatte nur einen kleinen Fehler in meinem Servercode.
Zuletzt geändert von Batze am 12.02.2006 23:55, insgesamt 1-mal geändert.
-
- Beiträge: 713
- Registriert: 22.03.2005 00:29
- Computerausstattung: Computer und Strom vorhanden
- Wohnort: LK Wolfenbüttel
Wir ja immer komischer.
Ob, habe es gefunden, noch nie gesehen vorher.
Liegt wohl mit daran das ich die Dinger zu schnell eintippe bzw. das autovervollständigen immer schnell nutze.
Was ich aber komisch finde und unerklärlich ist, das ihr (und jetzt auch ich) hier ne Servernummer vergeben (createnetworkserver(0,7777[,]) aber jaPBe anzeicht ...server(SERVERNAME$,port[,type])
Muß das jetzt einer verstehen???
Hiiiilfffeeeee
Gruß
Toshy
Ob, habe es gefunden, noch nie gesehen vorher.
Liegt wohl mit daran das ich die Dinger zu schnell eintippe bzw. das autovervollständigen immer schnell nutze.
Was ich aber komisch finde und unerklärlich ist, das ihr (und jetzt auch ich) hier ne Servernummer vergeben (createnetworkserver(0,7777[,]) aber jaPBe anzeicht ...server(SERVERNAME$,port[,type])
Muß das jetzt einer verstehen???
Hiiiilfffeeeee

Gruß
Toshy