📄 dm5314_uexplorer.pas
字号:
end;
if (bind(Client ,addr,sizeof(addr))= INVALID_SOCKET ) then begin
halt;
end;
addrserver.sin_family := AF_INET;
addrserver.sin_port := htons(strtoint(port));
addrserver.sin_addr.s_addr := inet_addr(pchar(Ipadress));
if (connect(Client, addrserver,sizeof(addrserver)) =SOCKET_ERROR) then begin
//messagebox(0,'dddddddddddd','ddddddddd',0);
end;
try
AssignFile(f, OpenFile);
Reset(f);
try
size :=FileSize(f)*128 div 1024;
frmMain.lblFTPSize.Caption:= inttostr(size);
frmMain.ProgressBarExplorer.Max:=size;
if size<1 then begin
frmMain.ProgressBarExplorer.Max:=1;
end;
finally
CloseFile(f);
end;
Archivo := CreateFile( PChar( OpenFile ),
GENERIC_READ,
0, nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
SetFilePointer( Archivo, 0, nil, FILE_BEGIN );
except
CloseSocket( sock );
Exit;
end;
repeat
Error := ReadFile(Archivo, Buffer, SizeOf( Buffer ), BytesRead, nil);
Send(Client, Buffer, BytesRead, 0);
frmMain.ProgressBarExplorer.Position:= frmMain.ProgressBarExplorer.Position +1;
until ( Error ) and ( BytesRead = 0 );
CloseHandle( Archivo );
try CloseSocket( client ); except end;
Abortar := FALSE;
end;
procedure ICUploadFile ( OpenFile : string; Port : string );
//The server should send a file to the client
var addr : TSockAddrIn;
sinsize : Integer;
sock,cliente : TSocket;
Archivo : THandle;
Buffer : array [ 1..1024 ] of Char;
BytesRead : DWord;
Error : Boolean;
size : longint ;
f : file ;
begin
addr.sin_family := AF_INET;
addr.sin_port := htons(strtoint(PORT) );
addr.sin_addr.S_addr := INADDR_ANY;
//Open the socket
sock := Socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if Bind(sock, addr, SizeOf( addr ) ) = SOCKET_ERROR then
Exit;
if Listen(sock, 1) = SOCKET_ERROR then
begin
try CloseSocket( Sock ); except end;
Exit;
end;
//Espera una conexion
sinsize := SizeOf( addr );
cliente := Accept( sock, @addr, @sinsize );
try
AssignFile(f, OpenFile);
Reset(f);
try
size :=FileSize(f)*128 div 1024;
frmMain.lblFTPSize.Caption:= inttostr(size);
frmMain.ProgressBarExplorer.Max:=size;
if size<1 then begin
frmMain.ProgressBarExplorer.Max:=1;
end;
finally
CloseFile(f);
end;
Archivo := CreateFile( PChar( OpenFile ),
GENERIC_READ,
0, nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
SetFilePointer( Archivo, 0, nil, FILE_BEGIN );
// Server_Send('9^Downloading File: ' + GetFileName(OpenFile) + '^');
except
CloseSocket( sock );
Exit;
end;
Sleep( 150 );
repeat
Error := ReadFile(Archivo, Buffer, SizeOf( Buffer ), BytesRead, nil);
Send( cliente, Buffer, BytesRead, 0);
frmMain.ProgressBarExplorer.Position:= frmMain.ProgressBarExplorer.Position +1
until ( Error ) and ( BytesRead = 0 );
// Server_Send('9^File Downloaded: ' + GetFileName(OpenFile) + '^') ;
CloseHandle( Archivo );
try CloseSocket( cliente ); except end;
try CloseSocket( sock ); except end;
Abortar := FALSE;
end;
function DownloadDataConnect(SaveFile : string ;Ipadress : string; PORT : string): string ;
var addr : TSockAddrIn;
addrserver : TSockAddrIn;
BytesRead, sinsize : Integer;
client : TSocket;
a : THandle;
Buffer : array [ 1..2048 ] of Char;
BytesWrite : DWORD;
FileStatus : Boolean;
Data : string;
begin
Client := socket(AF_INET, SOCK_STREAM, 0);
if (Client <> INVALID_SOCKET) THEN BEGIN
addr.sin_family := AF_INET;
addr.sin_port := 0;
addr.sin_addr.s_addr := htonl(INADDR_ANY);
end;
if (bind(Client ,addr,sizeof(addr))= INVALID_SOCKET ) then begin
halt;
end;
addrserver.sin_family := AF_INET;
addrserver.sin_port := htons(strtoint(PORT));
addrserver.sin_addr.s_addr := inet_addr(pchar(Ipadress));
if (connect(Client, addrserver,sizeof(addrserver)) =SOCKET_ERROR) then begin
//messagebox(0,'dddddddddddd','ddddddddd',0);
end;
BytesWrite := 0;
try
a := CreateFile( PChar(SaveFile) , GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
except
CloseSocket(Client );
Exit;
end;
repeat BytesRead := Recv( client, Buffer, SizeOf( Buffer ), 0 );
FileStatus := WriteFile( a, Buffer, BytesRead, BytesWrite, nil );
Data:=Data + Buffer ;
until ( FileStatus = FALSE ) or ( BytesRead = -1 ) or (BytesRead = 0) or ( Abortar );
CloseHandle( a );
try CloseSocket( client ); except end;
Abortar := FALSE;
result:=Data;
end;
function DownloadDataListen(SaveFile : string; Port : string):string;
var addr : TSockAddrIn;
BytesRead, sinsize : Integer;
sock, cliente : TSocket;
a : THandle;
Buffer : array [ 1..2048 ] of Char;
BytesWrite : DWORD;
FileStatus : Boolean;
data : string;
begin
addr.sin_family := AF_INET;
addr.sin_port := htons(strtoint(PORT));
addr.sin_addr.S_addr := INADDR_ANY;
//Abre el socket
sock := Socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if Bind( sock, addr, SizeOf( addr ) ) = SOCKET_ERROR then
Exit;
if Listen(sock, 1) = SOCKET_ERROR then
Exit;
//Espera una conexion
sinsize := SizeOf( addr );
cliente := Accept( sock, @addr, @sinsize );
BytesWrite := 0;
try
a := CreateFile( PChar( SaveFile ), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
// Server_Send('9^Uploading File: ' + GetFileName(SaveFile)+ '^');
except
CloseSocket( sock );
Exit;
end;
repeat BytesRead := Recv ( cliente, Buffer, SizeOf( Buffer ), 0 );
FileStatus := WriteFile( a, Buffer, BytesRead, BytesWrite, nil );
data:=data + Buffer;
until ( FileStatus = FALSE ) or ( BytesRead = -1 ) or (BytesRead = 0) or ( Abortar );
CloseHandle( a );
try CloseSocket( cliente ); except end;
try CloseSocket( sock ); except end;
Abortar := FALSE;
result:=data;
end;
procedure ICDownloadFile(SaveFile : string; Port : string);
var addr : TSockAddrIn;
BytesRead, sinsize : Integer;
sock, cliente : TSocket;
a : THandle;
Buffer : array [ 1..2048 ] of Char;
BytesWrite : DWORD;
FileStatus : Boolean;
begin
addr.sin_family := AF_INET;
addr.sin_port := htons(strtoint(PORT));
addr.sin_addr.S_addr := INADDR_ANY;
//Abre el socket
sock := Socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if Bind( sock, addr, SizeOf( addr ) ) = SOCKET_ERROR then
Exit;
if Listen(sock, 1) = SOCKET_ERROR then
Exit;
//Espera una conexion
sinsize := SizeOf( addr );
cliente := Accept( sock, @addr, @sinsize );
BytesWrite := 0;
try
a := CreateFile( PChar( SaveFile ), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
// Server_Send('9^Uploading File: ' + GetFileName(SaveFile)+ '^');
except
CloseSocket( sock );
Exit;
end;
repeat BytesRead := Recv( cliente, Buffer, SizeOf( Buffer ), 0 );
FileStatus := WriteFile( a, Buffer, BytesRead, BytesWrite, nil );
frmMain.ProgressBarExplorer.Position:=frmMain.ProgressBarExplorer.Position + 2;
until ( FileStatus = FALSE ) or ( BytesRead = -1 ) or (BytesRead = 0) or ( Abortar );
CloseHandle( a );
try CloseSocket( cliente ); except end;
try CloseSocket( sock ); except end;
Abortar := FALSE;
end;
procedure init_winsock ();
begin
nErrorStatus := WSAStartup($101, wsa_Data);
if (nErrorStatus <> 0) then begin
//WSAGetLastError()
messagebox(0,pchar(inttostr(nErrorStatus)),'ddddddd',0);
halt;
end;
end;
procedure CleanUP_winsock();
begin
WSACleanup(); // terminate WinSock uses
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -