Avatar billede krab Praktikant
23. januar 2003 - 18:40 Der er 2 kommentarer og
1 løsning

Clientsocket

Hej!!

Kan man overfør filer med client/server socket???
Avatar billede clscableguy Praktikant
23. januar 2003 - 20:04 #1
uses  Wininet, Winsock;
{$R *.dfm}

function GetInetFile
(const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var
  hSession, hURL: HInternet;
  Buffer: array[1..BufferSize] of Byte;
  BufferLen: DWORD;
  f: File;
  sAppName: string;
begin
Result:=False;
sAppName := ExtractFileName(Application.ExeName);
hSession := InternetOpen(PChar(sAppName),
                INTERNET_OPEN_TYPE_PRECONFIG,
              nil, nil, 0);
try
  hURL := InternetOpenURL(hSession,
            PChar(fileURL),
            nil,0,0,0);
  try
  AssignFile(f, FileName);
  Rewrite(f,1);
  repeat
    InternetReadFile(hURL, @Buffer,
                    SizeOf(Buffer), BufferLen);
    BlockWrite(f, Buffer, BufferLen)
  until BufferLen = 0;
  CloseFile(f);
  Result:=True;
  finally
  InternetCloseHandle(hURL)
  end
finally
  InternetCloseHandle(hSession)
end
end;


function GetIPFromHost
(var HostName, IPaddr, WSAErr: string): Boolean;
type
  Name = array[0..100] of Char;
  PName = ^Name;
var
  HEnt: pHostEnt;
  HName: PName;
  WSAData: TWSAData;
  i: Integer;
begin
  Result := False;
  if WSAStartup($0101, WSAData) <> 0 then begin
    WSAErr := 'Winsock is not responding."';
    Exit;
  end;
  IPaddr := '';
  New(HName);
  if GetHostName(HName^, SizeOf(Name)) = 0 then
  begin
    HostName := StrPas(HName^);
    HEnt := GetHostByName(HName^);
    for i := 0 to HEnt^.h_length - 1 do
    IPaddr :=
      Concat(IPaddr,
      IntToStr(Ord(HEnt^.h_addr_list^[i])) + '.');
    SetLength(IPaddr, Length(IPaddr) - 1);
    Result := True;
  end
  else begin
  case WSAGetLastError of
    WSANOTINITIALISED:WSAErr:='WSANotInitialised';
    WSAENETDOWN      :WSAErr:='WSAENetDown';
    WSAEINPROGRESS  :WSAErr:='WSAEInProgress';
  end;
  end;
  Dispose(HName);
  WSACleanup;
end;

procedure TForm1.opdaterClick(Sender: TObject);
var
  Host, IP, Err : string;
  FileOnNet, LocalFileName, sti : string;
  filnavn : pchar;
begin
  if GetIPFromHost(Host, IP, Err) then
    FileOnNet:='http://servernavn/filnavn.zip'
  else
    MessageDlg(Err, mtError, [mbOk], 0);
  LocalFileName:='c:\filnavn.zip';
  if GetInetFile(FileOnNet,LocalFileName)=True then
    begin
    end;
end;
Avatar billede niceday Nybegynder
24. januar 2003 - 04:51 #2
Du burde nok give nogle flere points for et spørgsmål som dit - det er jo ikke ligefrem en nem løsning - hvis man ikke lige har en kodestump liggende.

/ niceday
Avatar billede krab Praktikant
03. juni 2003 - 19:18 #3
lukket!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester