Autor |
Beitrag |
Petros
Beiträge: 131
Erhaltene Danke: 1
Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
|
Verfasst: Do 24.05.12 17:40
Hallo Delphi freunde!
Ich habe für ein projeckt von mir einen kleinen chat programiert "mit serversocket und clientsocket".
Soweit funktioniert alles nur kann ich im moment nur ein festgelegtes pw benutzen. Jetzt will ich aber das ich eine liste wo Benutzername und passwort gespeichert werden gerne würde ich dazu Memo oder Richtext oder evtl auch ne listbox komponeten benutze wo die daten gespeicht sind
Server
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var i:integer; passwort,SendText :AnsiString; begin passwort:= Socket.ReceiveText; If passwort[1] = #11 then begin Delete(Nachricht,1,1); If passwort = 'Passwort' then begin SendText := #12; end else begin SendText := #13; end; end; |
Client
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var Text : AnsiString; SendT : AnsiString; begin Text := Socket.ReceiveText; If Text[1] = #11 then begin SendT := #11 + passwort.text; Socket.SendText(SendT); end; Text := Socket.ReceiveText; If Text[1] = #12 then begin Form2.Show; end else If Text[1] = #13 then begin Application.Terminate; end; end; |
Nun weiß ich leider nicht wie mann es ausliest zumindest das auslesen wäre kein problem nur wie bekomme ich es hin das er jede zeile einzeln testet und schaut ob das richtige PW mit dabei ist.
MFG Petros Moderiert von Narses: Topic aus Dateizugriff verschoben am Do 24.05.2012 um 19:40
|
|
Narses
Beiträge: 10181
Erhaltene Danke: 1254
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 24.05.12 19:46
Moin!
Petros hat folgendes geschrieben : | Ich habe für ein projeckt von mir einen kleinen chat programiert "mit serversocket und clientsocket".
Soweit funktioniert alles |
Du hast mindestens zwei Probleme:
a) Du gehst davon aus, dass die Datenpakete so ankommen, wie du sie sendest. Das ist allgemein aber ein Fehler, hier steht, warum das so ist.
b) Du brauchst ein Protokoll, um die unterschiedlichen Daten auseinanderhalten zu können. Hier wird sowas erklärt.
Für die Userliste mit Passwort würde ich dir als simplen Ansatz ein Array of record empfehlen, in dem record kannst du dann Username und Passwort ablegen. Wenn du es besser machen möchtest, dann kannst du auch eine TObjectList nehmen und die User als Objekte dort ablegen.
Von dem Ansatz mit dem Memo oder anderen visuellen Komponenten würde ich dir dringend abraten!
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Petros
Beiträge: 131
Erhaltene Danke: 1
Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
|
Verfasst: Do 24.05.12 20:43
Danke Narses stimmt mit a) und b) naja ich habs im moment nur local getestet mit nem kleines hallo aber als ich mir das grad mal richtig durchgelesen habe macht das auf jedenfall sinn. werde den gesamten chat umschreiben ist ja ein super TUT was du dazu gemacht hast.
zum Arry of record sind die werte ja vorbestimmt wenn neue user dazu kommen müsste ich ja den server sozusagen jedesmal umschreiben bzw erweitern um 1 arry also werde ich wohl TObjectList verwenden..
//Edit Arry of record hab ich etwas falsch verstanden gehabt hab nen beitrag bei google gefunden delphi-lernen.de/de/...php?mid=107&vr=1 damit gehts
jetzt meine andere frage wie lass ich den server die werte überprüfen und an den clienten zurück senden das, dass PW zum benutzer gehöhrt... und er auch die verbindung zulässt
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Do 24.05.12 21:29
Das ganze habe ich schOn umgesetzt. Ich benutze dazu eine eigene Prozedur etc. Am Anfang muss man pw. Und Namen in edits eingeben, diese werden dann mit !n nickname !p passwort versendet und der Server erkennt das erste Zeichen + das zweite Zeichen ergibt !n es wird somit die anmelde Procedure eingeleitet. Dann wird der nickname ausgelesen und abgeglichen ob er in der Datei vorhanden ist. Wenn ja dann wird das passwort mit dem text in der nächsten Zeile abgeglichen. Wenn es gleich ist, dann wird !ok nickname oder !no Nickname zurückgeschickt. Der Client erkennt das und verbindet entweder oder macht das chatfenster gar nicht erst sichtbar bei Interesse an meiner Methode Schick mit eine pn dann Schick ich dir den quelltext
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
Narses
Beiträge: 10181
Erhaltene Danke: 1254
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 24.05.12 21:30
Moin!
Petros hat folgendes geschrieben : | jetzt meine andere frage wie lass ich den server die werte überprüfen und an den clienten zurück senden das, dass PW zum benutzer gehöhrt... und er auch die verbindung zulässt |
Wie schon gesagt, dafür brauchst du ein Protokoll. Wenn du direkt nach dem Login eines Benutzers den Namen und das Passwort sendest, kannst du im Server prüfen und ggfs. die Verbindung wieder beenden. Das läuft vom Konzept her so ab, wie bei der Versionsüberprüfung in meinem Tutorial.
cu
Narses
//EDIT:
IhopeonlyReader hat folgendes geschrieben : | Wenn es gleich ist, dann wird !ok nickname oder !no Nickname zurückgeschickt. Der Client erkennt das und verbindet entweder oder macht das chatfenster gar nicht erst sichtbar |
Das halte ich aber für einen groben Fehler im Sicherheitskonzept, wenn der Client entscheiden darf, ob er die Verbindung trennt oder nicht. Wenn schon Sicherheit, dann richtig, und dann gehört das in den Server.
IhopeonlyReader hat folgendes geschrieben : | bei Interesse an meiner Methode Schick mit eine pn dann Schick ich dir den quelltext |
Darf ich dich mal kurz auf unsere Richtlinien hinweisen: wir wollen hier kein Wissen verstecken oder die Diskussion auf eine private Ebene ziehen. Wenn es um Fachliches geht, warum dann nicht hier im Thread?
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Do 24.05.12 21:45
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
Petros
Beiträge: 131
Erhaltene Danke: 1
Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
|
Verfasst: Do 24.05.12 22:09
ich werde die ansätze auf jedenfall probieren
ich danke euch schon mal
MFG petros
|
|
Narses
Beiträge: 10181
Erhaltene Danke: 1254
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 24.05.12 23:45
Einloggen, um Attachments anzusehen!
_________________ There are 10 types of people - those who understand binary and those who don´t.
Für diesen Beitrag haben gedankt: Petros
|
|
Petros
Beiträge: 131
Erhaltene Danke: 1
Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
|
Verfasst: Fr 25.05.12 13:37
Danke Narses genau so wollte ich es haben naja naja meine arbeit solltest du jetzt zwar nicht beenden, aber ich danke dir trotzdem das du es gatahn hast und mir soweit helfen konntest...
MFG Petros
|
|
Narses
Beiträge: 10181
Erhaltene Danke: 1254
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 25.05.12 13:49
_________________ There are 10 types of people - those who understand binary and those who don´t.
Für diesen Beitrag haben gedankt: Petros
|
|