Entwickler-Ecke
Internet / Netzwerk - CHAT-Programmieren....
Scrat - Fr 11.04.03 09:15
Titel: CHAT-Programmieren....
Hallo zusammen,
ich habe mal einfach die Demo des Chats von Delphi genommen und erweitert.
Ist ja alles ganz schön und gut...aber wenn der Server was sendet kann der Client das nicht empfangen (zeigt es auf jedenfall nicht an).
Der Server hingegend zeigt alles an. Die gesendeten Zeilen vom Clienten und von sich selbst.
Warum kann der Client die Zeilen vo Serve nicht anzeigen??
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TChatForm.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var i: integer; begin i:=1; if Key = VK_Return then begin if IsServer=true then //Wenn man Server ist. begin ServerSocket.Socket.Connections[0].SendText('['+TimeToStr(Time)+'] '+Edit1.text+': '+Memo1.Lines[Memo1.Lines.Count - 1]); Memo2.Lines.SaveToFile('LOG'+inttostr(i)+'.txt'); i:=i+1; end else if IsServer=false then //Wenn man Client ist. begin ClientSocket.Socket.SendText('['+TimeToStr(Time)+'] '+Edit1.text+': '+Memo1.Lines[Memo1.Lines.Count - 1]); Memo2.lines.add('['+TimeToStr(Time)+'] '+Edit1.text+': '+Memo1.Lines[Memo1.Lines.Count - 1]); Memo2.Lines.SaveToFile('LOG'+inttostr(i)+'.txt'); i:=i+1; memo1.text:=''; end; end; end; |
MFG
Scrat
focus - Fr 11.04.03 09:54
was steht denn im onreceive des clients?
gruss
michael
ps: ich weiss jetzt nicht ob es am kopieren liegt aber ich würde die einrückungen nochmal überarbeiten.... nur der sichtbarkeit halber und das andere mehr lust haben deinen code überhaupt zu lesen....
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| procedure TChatForm.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var i: integer; Server: TServerSocket; Client: TClientSocket; begin Server := ServerSocket.Socket; // init Client := ClientSocket.Socket; // um die langen zeilen zu kürzen i:=1;
if(Key = VK_Return)then begin if(IsServer)then begin Server.Connections[0].SendText('['+TimeToStr(Time)+'] '+Edit1.text+ ': '+Memo1.Lines[Memo1.Lines.Count - 1]); Memo2.Lines.SaveToFile('LOG'+inttostr(i)+'.txt'); end else begin Client.SendText('['+TimeToStr(Time)+'] '+Edit1.text+ ': '+Memo1.Lines[Memo1.Lines.Count - 1]); Memo2.lines.add('['+TimeToStr(Time)+'] '+Edit1.text+ ': '+Memo1.Lines[Memo1.Lines.Count - 1]); Memo2.Lines.SaveToFile('LOG'+inttostr(i)+'.txt'); memo1.text:=''; end; inc(i); // anstelle von i:=i+1; verwende inc(i) end; end; |
Scrat - Fr 11.04.03 11:05
Okidokili.... :D
Also Folgendes Steht in den Felder:
CLIENT-SOCKET
OnConnect:
Quelltext
1: 2:
| Statusbar2.Panels[0].Text := 'Connected to: ' + Socket.RemoteHost; |
OnDisconnect:
Quelltext
1:
| Statusbar2.Panels[0].Text := 'Offline'; |
OnError:
Quelltext
1: 2: 3:
| Memo2.Lines.Add('Verbindung mit '+Server+' konnte nicht hergestellt werden.'); ErrorCode := 0; |
OnRead:
Quelltext
1:
| Memo2.Lines.Add(ServerSocket.socket.ReceiveText); |
SERVER-SOCKET
OnAccept:
Quelltext
1: 2:
| IsServer := True; Statusbar2.Panels[0].Text := 'Verbunden mit: ' + Socket.RemoteAddress; |
OnClientDisconnect:
Quelltext
1:
| Statusbar2.Panels[0].Text := 'Offline'; |
OnClientRead:
Quelltext
1:
| Memo2.Lines.Add(Socket.ReceiveText); |
MFG
Scrat
focus - Fr 11.04.03 12:15
Memo2.Lines.Add(ServerSocket.socket.ReceiveText);
ich denke mal das müsste clientsocket.socket.receivetext heissen..
arbeite nicht ganz so gerne mit der komponente schau dir mal die indys an und die simpletcp komponente von UtilMind (pers favorit)...
http://ip-web.hn.org/filez/scktbsp.zip
gruss
michael
patmann2001 - Mo 14.04.03 09:27
Hallo
focus hat recht.
Ausserdem wirst Du feststellen, das Du mit diesem Programm immer nur einen Server mit einem Client verbinden kannst. Du musst Dir noch was für die MultiClient Situation einfallen lassen.
Wenn Du fragen hast, dann melde Dich ruhig bei mir.
cu Patmann
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!