Seite 2 von 2

Verfasst: 15.12.2004 20:12
von captain third
danke kid,des war serh hilfreich,bin ein schritt weitergekommen.nur bei dem fehler,da hät ich ewig suchen können.so nun ne andre frage <) un zwa,jeder spricht davon "Der buffer mus entleert werden" naja tu ich doch oder etwa nicht? freememory(buffer) oder nicht? oder hab ichs falsch hingesetzt?

Verfasst: 15.12.2004 20:35
von tranquil
dieses thema wurde im englischen forum schon oft behandelt. hier gibt es infos zu einem simplen chatserver/client:

http://purebasic.myforums.net/viewtopic ... highlight=

Mike

Verfasst: 15.12.2004 20:54
von captain third
darf ich mal ehrlich sein? ich hab da net durchgeblickt.... :o zu hoch für mich :freak: naja,kann es mir bitte einer für ganz bekloppte erklärn???(den spruch musste ich schon oft loslassen... :mrgreen: )

Verfasst: 15.12.2004 23:22
von tranquil
vielleicht setzt du deine ziele am anfang schon etwas zu hoch!? Fang doch erstmal mit etwas anderem an um Fuß zu fassen.

Nur so als Tipp. Aber ansonsten werde ich mir morgen die Zeit nehmen und das mal erklären.

Verfasst: 15.12.2004 23:56
von captain third
mmh,naja,nun,also,äääähm

ich dachte einen chat zu machen,auf console() ist einfach,naja das da seine schwirigkeiten ind ist klar,aber so insgesammt find ich es einfach,ich hab mir auch die hilfe durchguggn müssn um den server und den clienten zu schreiben,ein paar tutorials habsch mia au durchglesn,früher hab ich ja auch ein bisschen BB3D gekonnt,oderBBP,manchmal hat ich auch langeweile und hab mich an Qbasic rangemacht,naja jetzt ist halt purebasic an die reihe,und mir gefällts :mrgreen: aber jemanden der mir so einiges erklärn kann wär mir natürlich lieber :mrgreen: :mrgreen: :mrgreen:

Verfasst: 16.12.2004 00:14
von ChaOsKid
@tranquil
ich finde so ein chat is doch ein guter anfang

@captain third
des wird schon ;)
den speicher musst du doch nicht leeren.
das problem entsteht bei PeekS(*Buffer) (ohne länge)
da ReceiveNetworkData() kein chr(0) am ende des empfangenen strings setzt, nimmt peeks() noch ein stück von einer alten längeren nachricht mit.
wenn du jetzt aber PeekS(*Buffer,BufferLength) benutzt, dann geht es problemlos.
BufferLength ist das ergebnis von ReceiveNetworkData

anhang:
momentan machst du es ja so:

Code: Alles auswählen

*Buffer = AllocateMemory(1000)
Repeat
  ;ReceiveNetworkData() hier wird der speicher nie gelöscht nur überschrieben
  Delay(100)
ForEver
FreeMemory(*Buffer)
wenn du aber immer mit einem frischen leeren speicher arbeiten willst, dann würde ich es so machen:

Code: Alles auswählen

Repeat
  *Buffer = AllocateMemory(1000)
  ;ReceiveNetworkData() hier sind nur nullen im speicher
  Delay(100)
  FreeMemory(*Buffer) 
ForEver
keine ahnung welche technik besser ist....
beim nicht löschen sind es auf jeden fall weniger befehle in der hauptschleife, drum denke ich das es schneller ist.

mfG
Tobi

Verfasst: 16.12.2004 08:03
von captain third
hihi danke du hast recht,gleich viel besser mit geleertem speicher :mrgreen:

Verfasst: 16.12.2004 10:15
von tranquil
ReceiveNetworkData() gibt nicht in jedem Fall die anzahl der empfangenen Bytes zurück!

Ab und an kommt da auch ein #SOCKET_ERROR, was aber durchaus normal sein kann. Mit wsagetlasterror_() muss dann ermittelt werden was geschehen ist.

Im übrigen ist das nicht nur bei ReceiveNetworkData so. SendNetworkData() gint auch #Socket_Error zurück wenn was nicht so geklappt hat wie es sollte. Ansonsten gibt es die gesendeten Bytes zurück.

Verfasst: 16.12.2004 12:03
von captain third
achsoooo :shock: cool :mrgreen:

Verfasst: 16.12.2004 12:34
von captain third
mmmh,ich wollt mal fragen wie man die ganze console in einer farbe bekommt,also nicht wie jetze ConsoleColor(schriftfarbe,Hintergrundschriftfarbe) wenn ihr versteht was ich meine,ich möchte das die ganze console ne andere farbe bekommt,geht das irgendwie?