Mit einem Client Dauernd Daten empfangen...

Anfängerfragen zum Programmieren mit PureBasic.
funkheld
Beiträge: 649
Registriert: 31.12.2009 11:58

Mit einem Client Dauernd Daten empfangen...

Beitrag von funkheld »

Hallo, guten Tag.
Ich bekomme es nicht hin mit einem Client in einem Schleife Daten zu empfangen.
Es soll in einer Schleife laufen und wenn Daten ankommen, sollen die ausgegeben werden in der Console.
Dieses Event dafür kapier ich nicht.

Die Programme die ich hier finde, sind mir immer zu gross und zu mächtig.



Danke
Gruss
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Re: Mit einem Client Dauernd Daten empfangen...

Beitrag von KeyKon »

Vll hilft dir das ja weiter, ist aber wirklich nahezu auf das nötigste begrenzt und daher nicht das gelbe vom Ei, wenns um Stabilität oder Skalierbarkeit geht:

http://www.purebasic.fr/german/viewtopi ... 50#p314038

LG KeyKon
(\/) (°,,,°) (\/)
auser
Beiträge: 58
Registriert: 17.05.2011 10:56

Re: Mit einem Client Dauernd Daten empfangen...

Beitrag von auser »

Hmm also wenn es wirklich komplett minimalistisch nur um das Empfangen von Daten geht sollte das eigentlich reichen:

Code: Alles auswählen

InitNetwork()
OpenConsole()

*buffer = AllocateMemory(4096)
connection = OpenNetworkConnection("127.0.0.1",8080)

If *buffer And connection 
  Repeat
    If NetworkClientEvent(connection) = #PB_Event_DataReceived
      size = ReceiveNetworkData(connection,*buffer,4096)
      PrintN(PeekS(*buffer,size,#PB_Ascii))
    EndIf 
  ForEver
EndIf 
Bzw. wenn du auf die Daten von irgendwo her warten willst:

Code: Alles auswählen

InitNetwork()
OpenConsole()

*buffer = AllocateMemory(4096)
server = CreateNetworkServer(#PB_Any,8080)

If *buffer And server
  Repeat
    If NetworkServerEvent() = #PB_Event_DataReceived
      size = ReceiveNetworkData(EventClient(),*buffer,4096)
      PrintN(PeekS(*buffer,size,#PB_Ascii))
    EndIf 
  ForEver
EndIf 

#PB_Ascii muss nicht unbedingt sein... aber einige Programme die man evtl. zum Testen heranzieht (z.B. irgendwelche telnet tools) verwenden evtl. nicht standardmässig Unicode und man wundert sich. Und ich würde wohl noch irgendwo ein Delay(1) in die Schlaufe packen damit der Prozessor nicht zu sehr strapaziert wird.
funkheld
Beiträge: 649
Registriert: 31.12.2009 11:58

Re: Mit einem Client Dauernd Daten empfangen...

Beitrag von funkheld »

Jup, danke.
Das ist schön klein und übersichtlich.

Funktioniert wunderbar.

Gruss
Antworten