Seite 1 von 1

Netzwerkfrage ?

Verfasst: 30.12.2009 18:04
von amiga123
Hallo
Habe da folgendes Problem. Wenn ich diesen Beispielcode übersetzen lassen läuft das Programm eine gewisse Zeit und bricht dann ab. Wenn ich mir den Task Manager ansehe, dann braucht das Programm immer mehr Speicher sind alle Sekunden 0.004 KB. Was kann man da machen das das Programm nicht immer mehr Speicher braucht ?

Code: Alles auswählen

x.l
InitNetwork()
Port    = 6832
*Buffer = AllocateMemory(1000)
SEvent.l
ClientID.l

If CreateNetworkServer(0, Port)

  Repeat
    Gosub TIMER
    Delay (100)
  Until quit = 1
EndIf
End
TIMER:
Time$ = FormatDate("%ss", Date())
Debug Time$
x + 1
SEvent = NetworkServerEvent()
If SEvent
  ClientID = EventClient()
  vx$      = "§"
  net$     = anlage$ + vx$
  net$     = net$ + "1" + vx$
  net$     = net$ + "2" + vx$
  net$     = net$ + "3" + vx$
  net$     = net$ + "4" + vx$
  net$     = net$ + "5" + vx$
  SendNetworkString(ClientID, net$)
EndIf
Return
Ist ein Teil meines Programmes das daten ins Netzwerk schickt. Habe es schon mit der OnERROR Abfrage probiert, und da wird immer der SendNetworkString(ClientID, net$) als Ursache angezeigt.

Gruß Amiga123

Fehlermeldung die Zeile 1903 ist ebenfalls dieser Befehl SendNetworkString(ClientID, net$)
A program error was detected: Error Message: Invalid memory access Error Code: -1073741819 Code Address: 4266579 Target Address: 16166968 Sourcecode line: 1903 Sourcecode file: X:\Purebasic_4_00_Quellcode_ok\VISTA\Server\Server_1_02_OK.pb Register content: EAX = 94 EBX = 2011927161 ECX = 8081224 EDX = 0 EBP = 1245068 ESI = 16166968 EDI = 0 ESP = 1245048

Re: Netzwerkfrage ?

Verfasst: 30.12.2009 18:39
von Marc-21
WEnn ich das noch richtig weiß ist der fehler ClientID weil es nirgends gesagt wird wohin er es senden soll.


zb
ConnectionID(ClientID bei dir) = OpenNetworkConnection("127.0.0.1", Port)

Re: Netzwerkfrage ?

Verfasst: 30.12.2009 18:44
von amiga123
Marc-21 hat geschrieben:WEnn ich das noch richtig weiß ist der fehler ClientID weil es nirgends gesagt wird wohin er es senden soll.


zb
ConnectionID(ClientID bei dir) = OpenNetworkConnection("127.0.0.1", Port)
ne also an dem kann es nicht liegen. Es funktioniert ja auch meist 1 bis 2 Stunden. Die Clienten kriegen in dieser Zeit ihre Daten ganz normal.

Gruß Amiga123

Re: Netzwerkfrage ?

Verfasst: 30.12.2009 19:10
von PMV
Daten die der Server empfängt müssen auch im Programm ausgelesen
werden. Ich sehe lediglich das senden der Daten. So wird der Puffer
einfach voll laufen.

MFG PMV

Re: Netzwerkfrage ?

Verfasst: 30.12.2009 19:43
von amiga123
PMV hat geschrieben:Daten die der Server empfängt müssen auch im Programm ausgelesen
werden. Ich sehe lediglich das senden der Daten. So wird der Puffer
einfach voll laufen.

MFG PMV
Natürlich hängt auf der Clientseite ein Programm drann das die Daten ausliest. Wie gesagt das läuft unterschiedlich mal 1 bis 2 Stunden ohne Probleme.Die Clienten bekommen die Daten und geben die dann aus.
Was natürlich sein könnte das der server mehr daten sendet als die Clienten abnehmen ?, das werde ich mir noch mal anschauen.

Gruß amiga123

Re: Netzwerkfrage ?

Verfasst: 30.12.2009 22:21
von PMV
Der Server empfängt doch auch Daten.

Re: Netzwerkfrage ?

Verfasst: 03.01.2010 11:50
von amiga123
Hallo

Für alle die es Interessiert habe die Lösung gefunden.

client = EventClient()
*Buffer = AllocateMemory(1000)
Repeat
lese = ReceiveNetworkData(client, *Buffer, 1000)
Until lese <= 0
FreeMemory(*Buffer)
Wird dieser kleine Programmteil eingefügt läuft das Programm ohne Probleme und hängt sich auch nicht mehr auf.

Code: Alles auswählen

x.l
InitNetwork()
Port    = 6832
*Buffer = AllocateMemory(1000)
SEvent.l
ClientID.l

If CreateNetworkServer(0, Port)

  Repeat
    Gosub TIMER
    Delay (100)
  Until quit = 1
EndIf
End
TIMER:
Time$ = FormatDate("%ss", Date())
Debug Time$
x + 1
SEvent = NetworkServerEvent()
If SEvent
    client = EventClient()
   *Buffer = AllocateMemory(1000)
    Repeat
      lese = ReceiveNetworkData(client, *Buffer, 1000)
    Until lese <= 0
    FreeMemory(*Buffer)

  ClientID = EventClient()
  vx$      = "§"
  net$     = anlage$ + vx$
  net$     = net$ + "1" + vx$
  net$     = net$ + "2" + vx$
  net$     = net$ + "3" + vx$
  net$     = net$ + "4" + vx$
  net$     = net$ + "5" + vx$
  SendNetworkString(ClientID, net$)
EndIf
Return
Das war es schon.

Gruß Amiga123