[Önceki Sayfa] ß

 

EK –2 : Sunucu Programının Kaynak Kodları

 

 

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.

 

à