unit serverU;
interface
uses
Windows,
Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ScktComp,
Buttons, ExtCtrls;
type
TForm1 =
class(TForm)
sdata:
TServerSocket;
Label1:
TLabel;
edtdata:
TEdit;
GroupBox2: TGroupBox;
edtstatus: TEdit;
Label2:
TLabel;
Label3:
TLabel;
edtstext:
TEdit;
edtsdata:
TEdit;
btnhazirtext: TButton;
stext:
TServerSocket;
edtmsg:
TEdit;
btngonder: TButton;
btnhazirdata: TButton;
Label4:
TLabel;
memo:
TMemo;
btnportkur: TSpeedButton;
Label5:
TLabel;
Label6:
TLabel;
Bevel1:
TBevel;
Label7:
TLabel;
Button1:
TButton;
grup1:
TGroupBox;
BitBtn1:
TBitBtn;
procedure
sdataClientConnect(Sender: TObject;
Socket:
TCustomWinSocket);
procedure
btnhazirtextClick(Sender: TObject);
procedure
sdataClientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure
stextClientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure
btngonderClick(Sender: TObject);
procedure
btnhazirdataClick(Sender: TObject);
procedure
stextClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure
btnportkurClick(Sender: TObject);
procedure
FormCreate(Sender: TObject);
procedure
sdataClientDisconnect(Sender: TObject;
Socket:
TCustomWinSocket);
procedure
stextClientDisconnect(Sender: TObject;
Socket:
TCustomWinSocket);
procedure
Button1Click(Sender: TObject);
private
{ Private
declarations }
public
{ Public
declarations }
end;
var
Form1:
TForm1;
s:string;
veri:integer;
sonuc:byte;
implementation
{$R *.DFM}
procedure TForm1.sdataClientConnect(Sender: TObject;
Socket:
TCustomWinSocket);
begin
label1.caption:='Client DATA bağlantısı kurdu';
end; // end of procedure
procedure TForm1.btnhazirtextClick(Sender: TObject);
begin
if (edtstext.text='') then showmessage('sayısal
değer girmelisiniz')
else begin
stext.Port:=strtoint64(edtstext.text);
stext.Active:=true;
end;
btnhazirtext.Enabled:=false;
edtstext.color:=clgray;
edtstext.Enabled:=false;
end;
procedure TForm1.sdataClientRead(Sender: TObject;
Socket:
TCustomWinSocket);
begin
s:=socket.receivetext;
if (s='o') or (s='O') then
begin
asm
mov
dx,379h
in al,dx
xor
al,80h // 1000 0000b s7 yi maskele
mov
cl,3 // cl yi 3 yap,statusten lsb okunmayacak
shr
al,cl // al yi 3 bit kaydır
and
al,00001111b //s7 kırp 4 bit okusak yeter
mov
&sonuc,al
end ; //asm end
edtstatus.text:=inttostr(sonuc);
sdata.Socket.Connections[0].SendText(edtstatus.text);
end // end
of if
else
begin
edtdata.text:=s;
veri:=strtoint64(edtdata.text);
asm
mov
al,veri
mov
dx,378h
out
dx,al
end;
end; // end of else
end; // end of procedure
procedure TForm1.stextClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
memo.lines.add(Socket.ReceiveText);
end;
procedure TForm1.btngonderClick(Sender: TObject);
begin
stext.Socket.Connections[0].sendtext(edtmsg.text);
edtmsg.Clear;
end;
procedure TForm1.btnhazirdataClick(Sender: TObject);
begin
if (edtsdata.text='') then showmessage('bir şey gir')
else begin
sdata.Port:=strtoint64(edtsdata.text);
sdata.Active:=true;
end;
btnhazirdata.Enabled:=false;
edtsdata.color:=clgray;
edtsdata.Enabled:=false;
end;
procedure TForm1.stextClientConnect(Sender: TObject;
Socket:
TCustomWinSocket);
begin
label4.caption:='Client TEXT bağlantısı kurdu';
end;
procedure TForm1.btnportkurClick(Sender: TObject);
begin
stext.Socket.Close;
sdata.Socket.Close;
sdata.Active:=false;
stext.Active:=false;
edtstext.color:=clwhite;
edtsdata.color:=clwhite;
edtstext.Enabled:=true;
edtsdata.Enabled:=true;
edtstext.Clear;
edtsdata.Clear;
edtdata.clear;
edtstatus.clear;
btnhazirtext.Enabled:=true;
btnhazirdata.Enabled:=true;
label4.caption:='TEXT bağlantısı kesildi.';
label1.caption:='DATA bağlantısı kesildi.';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
stext.Port:=1024;
stext.Active:=true;
sdata.Port:=1032;
sdata.Active:=true;
end;
procedure TForm1.sdataClientDisconnect(Sender:
TObject;
Socket:
TCustomWinSocket);
begin
label1.caption:='DATA bağlantısı kesildi.';
end;
procedure TForm1.stextClientDisconnect(Sender:
TObject;
Socket:
TCustomWinSocket);
begin
label4.caption:='TEXT bağlantısı kesildi.';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
memo.clear;
end;
end.