heh... próbowałem jeszcze za pomocą pliku :
Program do komunikacji sieciowej Delphi:
unit KropkaKOD;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ScktComp, ExtCtrls;
type
TForm1 = class(TForm)
cmdsock: TClientSocket;
Edit1: TEdit;
Button1: TButton;
Stat: TStatusBar;
Button2: TButton;
filesock: TClientSocket;
Label1: TLabel;
ScmdSock: TServerSocket;
SfileSock: TServerSocket;
Button3: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure cmdsockConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure cmdsockError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure cmdsockDisconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure Button2Click(Sender: TObject);
procedure ScmdSockClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ScmdSockClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure SfileSockClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure Button3Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
sciezka = 'c:\Temp\Pob1.bin';
sciezka2 = 'c:\Temp\wys1.bin' ;
var
Form1: TForm1;
plik2:file of word;
j:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
j:=1;
cmdsock.active:=false; //dezaktywujemy socketa
cmdsock.Address:=edit1.text; //ustawiamy adres
cmdsock.Active:=true; //łączymy się
stat.SimpleText:='Łączenie z serwerem ['+edit1.text+'].....'; //info
edit1.Enabled:=false; //uniemożliwiamy zmiane adresu
button1.Enabled:=false; //do not more click ;P
button2.Enabled:=true;
end;
procedure TForm1.cmdsockConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
stat.SimpleText:='Połączono z serwerem!'; //małe info
filesock.Active:=false; //deaktywacja połączenia
filesock.Address:=edit1.text; // adres
filesock.Active:=true; // łączmy sie
end;
procedure TForm1.cmdsockError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
stat.SimpleText:='Nie można się połączyć z wybranym komputerem. ERROR #'+inttostr(errorcode); //the news...
errorcode:=0; //obslozyliśmy błąd
//aktywujemy komponenty
edit1.Enabled:=true;
button1.enabled:=true;
cmdsock.Active:=false; // deaktywacja socketu
filesock.Active:=false; // -||--||-
showmessage('Połączenie nie może być zrealizowane. Sprawdź poprawność adresu i spróbuj ponownie.');
end;
procedure TForm1.cmdsockDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
//aktywujemy komponenty
edit1.Enabled:=true;
button1.enabled:=true;
stat.SimpleText:='Rozłączono :(';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Enabled:=true;
end;
procedure TForm1.ScmdSockClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
label1.Caption:='polonczono z knypkiem:D'
end;
procedure TForm1.ScmdSockClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var s:string;
begin
s:=socket.ReceiveText;
if s='koniec' then begin //ahh to koniec... mozemy sie cieszyc nowym plikiem...
closefile(plik2); //zamykamy plik
label1.Caption:='Odebrano plik'; //mamy plik!
if copy(s,0,7)='wysylam' then //cos do nas wysylaja...
begin
//
label1.Caption:='Odbieram plik '+copy(s,8,length(s)-7); //info
AssignFile(plik2,'c:\temp\pob1.bin');//przypisujemy plik
Rewrite(plik2); //odfieramy plik :)
end;
end;
end;
procedure TForm1.SfileSockClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
pakiet:array[1..4] of word;
i:integer;
begin
SfileSock.Socket.Connections[0].ReceiveBuf(pakiet, SizeOf(pakiet));
AssignFile(plik2,'c:\temp\pob1.bin');//przypisujemy plik
Rewrite(plik2); //odfieramy plik :)
for i:=1 to 4 do
write(plik2,pakiet[i]);
closefile(plik2);
label1.caption:='odebrano';
end;
procedure TForm1.Button3Click(Sender: TObject);
var
s:string;
begin
timer1.Enabled:=false;
str(j,s);
label1.Caption:=s;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
plik:file of word;
pakiet:array [1..4] of word;
i:integer;
kas:array[1..4] of word;
begin
kas[1]:= 0;
inc(j);
assignfile(plik,sciezka2);
reset(plik);
for i:=1 to 4 do
read(plik,pakiet[i]);
seek(plik,1);
write(plik,kas[1]);
closefile(plik);
if pakiet[1] = 1 then
filesock.Socket.SendBuf(pakiet,SizeOf(pakiet));
end;
end.
i procedury w pascalu:
procedure pob;
var pob1:file of word;
i:integer;
buf:array[1..4] of word;
begin
buf[1]:= 0;
assign(pob1,'c:\temp\pob1.bin');
reset(pob1);
read(pob1,pobierz[1]);
if pobierz[1] = 1 then
begin
for i:=2 to 4 do
read(pob1,pobierz[i]);
kolejka:=true;
end;
seek(pob1,0);
write(pob1,buf[1]);
close(pob1);
x2:=pobierz[2];
y2:=pobierz[3];
end;
procedure wys(x,y:word);
var
wys1: file of word;
i:integer;
begin
wyslij[1]:= 1;
wyslij[2]:=x;
wyslij[3]:=y;
wyslij[4]:=0 ;
assign(wys1,'c:\temp\wys1.bin');
rewrite(wys1);
for i:=1 to 4 do
write(wys1,wyslij[i]);
close(wys1);
end;
nie rozumiem o jakie wiadomości Ci chodzi a przez jakieś dll to juz w ogóle .... moze jakiś link albo troche wiecej szczeglółw jak to zrobić bo prorgmowanie jest chyba po to zeby nie było.."takie rzeczy to tylko w erze"