Autor Beitrag
Scrat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 73



BeitragVerfasst: Fr 11.04.03 09:15 
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??

ausblenden 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

_________________
Wenn ein Programm nutzlos ist, muß es dokumentiert werden.
focus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187

XP, 2k, 98, Me
D6 Prof
BeitragVerfasst: 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....

ausblenden volle Höhe 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 73



BeitragVerfasst: Fr 11.04.03 11:05 
Okidokili.... :D

Also Folgendes Steht in den Felder:

CLIENT-SOCKET
OnConnect:
ausblenden Quelltext
1:
2:
Statusbar2.Panels[0].Text :=
 'Connected to: ' + Socket.RemoteHost;


OnDisconnect:
ausblenden Quelltext
1:
Statusbar2.Panels[0].Text := 'Offline';					


OnError:
ausblenden Quelltext
1:
2:
3:
Memo2.Lines.Add('Verbindung mit  '+Server+' 
 konnte nicht hergestellt werden.');
 ErrorCode := 0;


OnRead:
ausblenden Quelltext
1:
Memo2.Lines.Add(ServerSocket.socket.ReceiveText);					



SERVER-SOCKET
OnAccept:
ausblenden Quelltext
1:
2:
IsServer := True;
  Statusbar2.Panels[0].Text := 'Verbunden mit: ' + Socket.RemoteAddress;


OnClientDisconnect:
ausblenden Quelltext
1:
Statusbar2.Panels[0].Text := 'Offline';					


OnClientRead:
ausblenden Quelltext
1:
Memo2.Lines.Add(Socket.ReceiveText);					


MFG
Scrat

_________________
Wenn ein Programm nutzlos ist, muß es dokumentiert werden.
focus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187

XP, 2k, 98, Me
D6 Prof
BeitragVerfasst: 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)...

ip-web.hn.org/filez/scktbsp.zip
gruss
michael


Zuletzt bearbeitet von focus am Mo 27.10.03 11:16, insgesamt 1-mal bearbeitet
patmann2001
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: 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