Evo cijeli kod:
Code:
unit PasswdSK;
interface
uses
SysUtils, Classes, Controls, ExtCtrls, Dialogs,
WinSock,StdCtrls;
type
TPasswdSK = class(TCustomPanel)
private
{ Private declarations }
procedure ServerAktivan(Sender: TObject);
procedure Spoji(Sender: TObject);
procedure IPlist(Sender: TObject);
protected
{ Protected declarations }
public
{ Public declarations }
ServerAktivanBtn:TButton;
SpojiBtn:TButton;
IPBtn:TButton;
IPLst:TMemo;
constructor Create(AOwner:TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
property Align;
property Anchors;
property AutoSize;
property BiDiMode;
property Color nodefault;
property Constraints;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Font;
property ParentBiDiMode;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property OnClick;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;
end;
procedure Register;
implementation
procedure TPasswdSK.ServerAktivan(Sender: TObject);
var sock_data:TWSAData;
sock_error:integer;
m_socket,AcceptSocket:TSocket;
ServerService:SockAddr_in;
begin
sock_error:=WSAStartUp(2,sock_data);
if sock_error<>0 then begin
MessageDlg('Error 1',mtError,[mbOK],0);
WSACleanup;
exit;
end
else begin
//ako je dobro
m_socket:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if m_socket=SOCKET_ERROR then
begin
MessageDlg('Error 2',mtInformation,[mbOK],0);
WSACleanup;
exit;
end
else
begin
//ako je dobro
ServerService.sin_family:=AF_INET;
ServerService.sin_addr.s_addr:=inet_addr('127.0.0.1');
ServerService.sin_port:=htons(13);
try
bind(m_socket,ServerService,SizeOf(ServerService));
except begin
MessageDlg('Error 3',mtError,[mbOK],0);
end; end;
listen(m_socket,1);
AcceptSocket:=SOCKET_ERROR;
MessageDlg('Cekam klijenta..',mtInformation,[mbOK],0);
while AcceptSocket=SOCKET_ERROR do
begin
AcceptSocket:=accept(m_socket,nil,nil);
end;
MessageDlg('Klijent je uspjesno spojen!',mtInformation,[mbOK],0);
end;
end;
WSACleanup;
end;
procedure TPasswdSK.Spoji(Sender: TObject);
var sock_data:TWSAData;
sock_error:integer;
m_socket:TSocket;
ServerService:SockAddr_in;
begin
sock_error:=WSAStartUp(2,sock_data);
if sock_error<>0 then begin
MessageDlg('Error 1',mtError,[mbOK],0);
WSACleanup;
exit;
end
else begin
//ako je dobro
m_socket:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if m_socket=SOCKET_ERROR then
begin
MessageDlg('Error 2',mtInformation,[mbOK],0);
WSACleanup;
exit;
end
else
begin
//ako je dobro
ServerService.sin_family:=AF_INET;
ServerService.sin_addr.s_addr:=inet_addr('127.0.0.1');
ServerService.sin_port:=htons(13);
try
Connect(m_socket,ServerService,SizeOf(ServerService));
MessageDlg('Uspjesno smo spojeni sa serverom!',mtInformation,[mbOK],0);
except begin
MessageDlg('Error 3',mtError,[mbOK],0);
end; end;
end;
end;
WSACleanup;
end;
function GetIp:TStrings;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: array[0..63] of Char;
I: Integer;
GInitData: TWSAData;
begin
WSAStartup($101, GInitData);
Result := TstringList.Create;
Result.Clear;
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then Exit;
pPtr := PaPInAddr(phe^.h_addr_list);
I := 0;
while pPtr^[I] <> nil do
begin
Result.Add(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
procedure TPasswdSK.IPlist(Sender: TObject);
begin
IPLst.Lines:=GetIp;
end;
constructor TPasswdSK.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
ServerAktivanBtn:=TButton.Create(self);
ServerAktivanBtn.Parent:=self;
with ServerAktivanBtn do
begin
Top:=10;
Left:=10;
Caption:='ServerAktivan';
OnClick:=ServerAktivan;
end;
SpojiBtn:=TButton.Create(self);
SpojiBtn.Parent:=self;
with SpojiBtn do
begin
Top:=60;
Left:=10;
Caption:='Spoji';
OnClick:=Spoji;
end;
IPBtn:=TButton.Create(self);
IPBtn.Parent:=self;
with IPBtn do
begin
Top:=110;
Left:=10;
Caption:='IP adrese';
OnClick:=IPList;
end;
IPLst:=TMemo.Create(self);
IPLst.Parent:=self;
with IPLst do
begin
Top:=160;
Left:=10;
Clear;
end;
Height:=300;
Width:=300;
end;
destructor TPasswdSK.Destroy;
begin
inherited Destroy;
end;
procedure Register;
begin
RegisterComponents('Samples', [TPasswdSK]);
end;
end.
unit PasswdSK;
interface
uses
SysUtils, Classes, Controls, ExtCtrls, Dialogs,
WinSock,StdCtrls;
type
TPasswdSK = class(TCustomPanel)
private
{ Private declarations }
procedure ServerAktivan(Sender: TObject);
procedure Spoji(Sender: TObject);
procedure IPlist(Sender: TObject);
protected
{ Protected declarations }
public
{ Public declarations }
ServerAktivanBtn:TButton;
SpojiBtn:TButton;
IPBtn:TButton;
IPLst:TMemo;
constructor Create(AOwner:TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
property Align;
property Anchors;
property AutoSize;
property BiDiMode;
property Color nodefault;
property Constraints;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Font;
property ParentBiDiMode;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property OnClick;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;
end;
procedure Register;
implementation
procedure TPasswdSK.ServerAktivan(Sender: TObject);
var sock_data:TWSAData;
sock_error:integer;
m_socket,AcceptSocket:TSocket;
ServerService:SockAddr_in;
begin
sock_error:=WSAStartUp(2,sock_data);
if sock_error<>0 then begin
MessageDlg('Error 1',mtError,[mbOK],0);
WSACleanup;
exit;
end
else begin
//ako je dobro
m_socket:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if m_socket=SOCKET_ERROR then
begin
MessageDlg('Error 2',mtInformation,[mbOK],0);
WSACleanup;
exit;
end
else
begin
//ako je dobro
ServerService.sin_family:=AF_INET;
ServerService.sin_addr.s_addr:=inet_addr('127.0.0.1');
ServerService.sin_port:=htons(13);
try
bind(m_socket,ServerService,SizeOf(ServerService));
except begin
MessageDlg('Error 3',mtError,[mbOK],0);
end; end;
listen(m_socket,1);
AcceptSocket:=SOCKET_ERROR;
MessageDlg('Cekam klijenta..',mtInformation,[mbOK],0);
while AcceptSocket=SOCKET_ERROR do
begin
AcceptSocket:=accept(m_socket,nil,nil);
end;
MessageDlg('Klijent je uspjesno spojen!',mtInformation,[mbOK],0);
end;
end;
WSACleanup;
end;
procedure TPasswdSK.Spoji(Sender: TObject);
var sock_data:TWSAData;
sock_error:integer;
m_socket:TSocket;
ServerService:SockAddr_in;
begin
sock_error:=WSAStartUp(2,sock_data);
if sock_error<>0 then begin
MessageDlg('Error 1',mtError,[mbOK],0);
WSACleanup;
exit;
end
else begin
//ako je dobro
m_socket:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if m_socket=SOCKET_ERROR then
begin
MessageDlg('Error 2',mtInformation,[mbOK],0);
WSACleanup;
exit;
end
else
begin
//ako je dobro
ServerService.sin_family:=AF_INET;
ServerService.sin_addr.s_addr:=inet_addr('127.0.0.1');
ServerService.sin_port:=htons(13);
try
Connect(m_socket,ServerService,SizeOf(ServerService));
MessageDlg('Uspjesno smo spojeni sa serverom!',mtInformation,[mbOK],0);
except begin
MessageDlg('Error 3',mtError,[mbOK],0);
end; end;
end;
end;
WSACleanup;
end;
function GetIp:TStrings;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: array[0..63] of Char;
I: Integer;
GInitData: TWSAData;
begin
WSAStartup($101, GInitData);
Result := TstringList.Create;
Result.Clear;
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then Exit;
pPtr := PaPInAddr(phe^.h_addr_list);
I := 0;
while pPtr^[I] <> nil do
begin
Result.Add(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
procedure TPasswdSK.IPlist(Sender: TObject);
begin
IPLst.Lines:=GetIp;
end;
constructor TPasswdSK.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
ServerAktivanBtn:=TButton.Create(self);
ServerAktivanBtn.Parent:=self;
with ServerAktivanBtn do
begin
Top:=10;
Left:=10;
Caption:='ServerAktivan';
OnClick:=ServerAktivan;
end;
SpojiBtn:=TButton.Create(self);
SpojiBtn.Parent:=self;
with SpojiBtn do
begin
Top:=60;
Left:=10;
Caption:='Spoji';
OnClick:=Spoji;
end;
IPBtn:=TButton.Create(self);
IPBtn.Parent:=self;
with IPBtn do
begin
Top:=110;
Left:=10;
Caption:='IP adrese';
OnClick:=IPList;
end;
IPLst:=TMemo.Create(self);
IPLst.Parent:=self;
with IPLst do
begin
Top:=160;
Left:=10;
Clear;
end;
Height:=300;
Width:=300;
end;
destructor TPasswdSK.Destroy;
begin
inherited Destroy;
end;
procedure Register;
begin
RegisterComponents('Samples', [TPasswdSK]);
end;
end.
Unaprijed hvala, p0z!!!