Einzelnen Beitrag anzeigen

Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#15

Re: IP Adresse von einem Rechner im INet finden

  Alt 5. Jun 2004, 21:25
Ich hab das Prog soweit fertig, dass es die Grundfunktionen erfüllt! Hier ist sind die Stücken aus dem Quellcode, die zur Übertragung von Daten wichtig sind:
Delphi-Quellcode:
procedure TMain.SendBtnClick(Sender: TObject);
begin
 try
   TCPClient.Connect(5);
   TCPClient.WriteLn(BN+': '+MsgEdit.Text);
   WriteMsg(BN+': '+MsgEdit.Text);//BN = Benutzername
   MsgEdit.Clear;
 finally
   TCPClient.Disconnect;
 end;
end;

procedure TMain.TCPServerExecute(AThread: TIdPeerThread);
var
  FS: TFileStream;
  SizeOfIncomingStream: integer;
  S, Fromuser, NameofFile, SizeofStream: String;
begin
 SDia.FilterIndex := 1;
 SDia.DefaultExt := '';
 with AThread.Connection do begin
  try
   S := Readln('', 5);

   if not (Pos('#@#START', S) = 1) then begin
      WriteMsg(S);//WriteMsg -> zum formatierten Hinzufügen in die Richeditkomponente
   end;

   if (Pos('#@#START', S) = 1) then begin
      WriteLog('Empfange Datei!');(*WriteLog-> zum formatierten Hinzufügen von Logbuchnachrichten (auch in die selbe Richedit)*)
      FromUser := CopyFT(S, Pos('|', S)+1, Length(S));
      Write('Sender: '+Fromuser);
      NameofFile := Readln('', 5);
      WriteLog('Dateiname: '+NameofFile);
      SizeofStream := Readln('', 5);
      WriteLog('Größe: '+SizeofStream);
      if MessageBox(Application.Handle, PChar(FromUser+' schickt ihnen die Datei "'+NameofFile+'", die '+SizeofStream+' groß ist.'+#13#10+#13#10+'Wollen sie sie annehmen?'), 'Frage', MB_YESNO) = IDYes then begin
         SDia.FileName := ExtractFileName(NameofFile);//SDia und ODia -> Save/OpenDialog
         if SDia.Execute then begin
            try
              Fs := TFileStream.Create(SDia.Filename, fmCreate or fmShareExclusive);
              SizeOfIncomingStream := ReadInteger;
              WriteLog('Datei wird runtergeladen...');
              ReadStream(fs, SizeOfIncomingStream);
              WriteLog('Transfer erfolgreich abgeschlossen!');
              WriteLog('Datei wurde unter "'+SDia.FileName+'" gespeichert!');
            finally
              Fs.Free;
            end;
         end;
      end;
   end;
  finally
   Disconnect;
  end;
 end;
end;

procedure TMain.SendFileBtnClick(Sender: TObject);
var
  FS: TFileStream;
begin
 if not ODia.Execute then Exit;

 with TCPClient do begin
   FS := TFileStream.Create(ODia.FileName, fmOpenRead or fmShareDenyWrite);
   if MessageDlg('Folgende Datei möchten sie verschicken:'+#13#10#13#10+
                 'Dateiname: "'+ODia.FileName+'"'+#13#10+
                 'Größe: '+MakeSize(FS.Size)+#13#10#13#10+
                 'Möchten sie sie an "'+TCPClient.Host+'" senden?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then Exit;
     Connect;
   try
       OpenWriteBuffer;
     try
       WriteLog('Übertrage Dateiinfos...');
       WriteLn('#@#START|'+BN);
       Writeln(ODia.FileName);
       Writeln(MakeSize(FS.Size));
       WriteLog('Dateitransfer beginnt...');
       WriteStream(fs, true, true, 0);
       CloseWriteBuffer;
       WriteLog('Dateitransfer beendet');
     except
       CancelWriteBuffer;
     raise;
     end;
   finally
     Disconnect;
     FS.Free;
   end;
 end;
end;

function TMain.MakeSize(ASize: Integer): String;//Zum Anzeigen der Größe in einer geeigneten Einheit
var
 I: integer;
 Size2: Real;
 Einheit: String;
begin
 Einheit := 'Bytes';
 Size2 := ASize;
 if Size2 > 1024 then begin
    Size2 := Runde(ASize/1024, 2);
    Einheit := 'KB';
 end;
 if Size2 > 1024 then begin
    Size2 := Runde(Size2/1024, 2);
    Einheit := 'MB';
 end;
 if Size2 > 1024 then begin
    Size2 := Runde(Size2/1024, 2);
    Einheit := 'GB';
 end;

 Result := FloatToStr(Size2)+' '+Einheit;
end;
Das Nachrichten senden funtzt einwandfrei! Aber das Dateiensenden funtzt nicht, manchmal gehts, manchmal nicht.(Habs im LAN probiert) Wenn ich mal keine Textdatei, sondern eine wavdatei verschicke, ist sie Nachher ein bisschen kleiner und man hört nurnoch die Hälfte! Irgendwas scheint falsch zu sein! Ich weiß nicht was da ist!
Manchmal wird zwar irgendwas versendet (beim Dateiversenden), aber es kommt weder eine Botschaft an, noch die Datei!
  Mit Zitat antworten Zitat