[Delphi 6] Socket-probleem cq. vraag.

Pagina: 1
Acties:

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Ik wil dus lekker gaan kloten met die twee Socket-dingen (Client en Server).

Nu kan ik dus al poorten opengooien en met poorten verbinden, dat is nie zo moeilijk.

Maar wat ik nu dus nog NIET kan, is het versturen van dingen.
Dat doe je toch gewoon met ClientSocket1.Socket.SentText('Blaaat'); ???

Ook had ik ergens gelezen, dat je met Threads moest gaan werken ofzo. Nu ben ik nie zo'n ster in Delphi en dat threads-gedoe zegt met weinig. :?

En het stomme vind ik nog wel, dat ik bijna niets nuttigs over Delphi op internet kan vinden ;(

Kunnen jullie me een eindje op weg helpen? :*

Verwijderd

Niks vinden ha lol: torry.net bijvoorbeeld.. is net ook al in een ander draadje naar voren gekomen.. en kijk eens in je delphi demo directory.. hier staat een map internet en in die map een map chat, hierin zit een klein projectje dat de basis dingen van je sockets uit legt.. Hier wordt ook meerdere malen naar verwezen in je help (als je die uberhaupt hebt gebruikt)

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Check idd de voorbeelden es die bij Delphi zitten, kun je veel van leren.

Verder: www.delphipages.com, www.delphiseek.com, www.google.com, http://groups.google.com

Succes!

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Osiris
  • Registratie: Januari 2000
  • Niet online
Thnx lui :D

Ik zag later ook nog dit topic: [topic=317381/1/100]

Wel kewl proggie, dat helaas nog niet goed werkt ;(

En over die help van Borland ben ik niet te spreken :( Vroeger was dat met Borland Pascal 7.0 wel anders. Tegenwoordig vind ik nix nuttige meer ;(

Maar thnx voor die sites; zo red ik me wel (hoop ik ;) )

Maar verdere tips zijn altijd welkom :D

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Uuhmm, ik vind die Help die bij Delphi zit juist heel goed, is echt super veel in terug te vinden met duidelijke tekst.

Help van Indy had beter gekunt, maar ja, je kunt niet alles hebben.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Hier een stuk source code:


client:
code:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
unit Client1Form;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ScktComp;

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    EditMsg: TEdit;
    btnSend: TButton;
    cbActivate: TCheckBox;
    EditServer: TEdit;
    Server: TLabel;
    Label1: TLabel;
    procedure btnSendClick(Sender: TObject);
    procedure ClientSocket1Connect(Sender: TObject;
    Socket: TCustomWinSocket);
    procedure ClientSocket1Disconnect(Sender: TObject;
    Socket: TCustomWinSocket);
    procedure cbActivateClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.btnSendClick(Sender: TObject);
begin
  ClientSocket1.Socket.SendText (EditMsg.Text);



end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Caption := 'Connected';
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Caption := 'Disconnected';
end;

procedure TForm1.cbActivateClick(Sender: TObject);
begin
  if not ClientSocket1.Active then
    ClientSocket1.Address := EditServer.Text;
  ClientSocket1.Active := cbActivate.Checked;
end;

end.

Server:
code:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
unit ServerForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ScktComp, StdCtrls;

const
  wm_RefreshClients = wm_User;

type
  TForm1 = class(TForm)
    ServerSocket1: TServerSocket;
    lbMsg: TListBox;
    lbClients: TListBox;
    Label1: TLabel;
    Label2: TLabel;
    lbLog: TListBox;
    procedure ServerSocket1ClientConnect(Sender: TObject;
    Socket: TCustomWinSocket);
    procedure ServerSocket1ClientDisconnect(Sender: TObject;
    Socket: TCustomWinSocket);
    procedure ServerSocket1ClientRead(Sender: TObject;
    Socket: TCustomWinSocket);
  private
    { Private declarations }
  public
    procedure RefreshClients (var Msg: TMessage);
    message wm_RefreshClients;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  lbLog.Items.Add ('Connected: ' +Socket.RemoteHost + ' (' +Socket.RemoteAddress + ')' );
  PostMessage (Handle, wm_RefreshClients, 0, 0);
end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  lbLog.Items.Add ('Disconnected: ' +Socket.RemoteHost + ' (' +Socket.RemoteAddress + ')' );
  PostMessage (Handle, wm_RefreshClients, 0, 0);
end;

procedure TForm1.RefreshClients;
var
  I: Integer;
begin
  lbClients.Clear;
  for I := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
    with ServerSocket1.Socket.Connections [I] do
    lbClients.Items.Add (RemoteAddress + ' (' + RemoteHost + ')');
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var i:integer;
    hulpstring:string;
begin
  Hulpstring:=Socket.ReceiveText;
  for i:= 0 to ServerSocket1.Socket.ActiveConnections - 1 do
     serversocket1.Socket.Connections[i].SendText(Hulpstring);
end;

end.
Pagina: 1