Демонстрация простой передачи файлов через TCP сокеты. В инете подобного вроде бы нет. Код без всякого рода указателей на файл и т.д. Простая передача и прием.
Клиент (передатчик):
Получатель
© Gravitas
Клиент (передатчик):
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
windows,
winsock;
const
Port = 2222;
IP = '10.10.10.10.';
Name = 'C:\11.exe';
var
s:TSocket;
WSA:TWSAData;
addr:TSockAddr;
procedure SendFile(filename:string);
var
MyFile : file;
n : integer;
Buff : array [1..127] of byte;
begin
FileMode:=0;
AssignFile(MyFile, filename);
Reset(MyFile, 1);
while not eof(MyFile) do begin
blockread(MyFile,buff,sizeof(buff),n);
send(s,buff,sizeof(buff),0);
// sleep(5);
end;
writeln('Sended');
end;
function InstallConnect : boolean;
begin
WSAStartup(MakeWord(2, 0), WSA);
s := Socket(PF_INET, SOCK_STREAM, 0);
addr.sin_family := AF_INET;
addr.sin_port := htons(port);
addr.sin_addr.S_addr := inet_addr(ip);
if (connect(s, Addr, SizeOf(Addr)) = 0) then
result:=true else result:=false;
end;
procedure Close;
begin
CloseSocket(s);
WSACleanup;
end;
begin
If InstallConnect then
SendFile(name);
Close();
readln;
end.
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
windows,
winsock;
const
Port = 2222;
IP = '10.10.10.10.';
Name = 'C:\11.exe';
var
s:TSocket;
WSA:TWSAData;
addr:TSockAddr;
procedure SendFile(filename:string);
var
MyFile : file;
n : integer;
Buff : array [1..127] of byte;
begin
FileMode:=0;
AssignFile(MyFile, filename);
Reset(MyFile, 1);
while not eof(MyFile) do begin
blockread(MyFile,buff,sizeof(buff),n);
send(s,buff,sizeof(buff),0);
// sleep(5);
end;
writeln('Sended');
end;
function InstallConnect : boolean;
begin
WSAStartup(MakeWord(2, 0), WSA);
s := Socket(PF_INET, SOCK_STREAM, 0);
addr.sin_family := AF_INET;
addr.sin_port := htons(port);
addr.sin_addr.S_addr := inet_addr(ip);
if (connect(s, Addr, SizeOf(Addr)) = 0) then
result:=true else result:=false;
end;
procedure Close;
begin
CloseSocket(s);
WSACleanup;
end;
begin
If InstallConnect then
SendFile(name);
Close();
readln;
end.