![]() |
Re: IP Adresse von einem Rechner im INet finden
Aha! :idea: Nagut, dann steht dem Prog ja jetzt nichts mehr im Wege!
Danke! |
Re: IP Adresse von einem Rechner im INet finden
Doch noch ne Frage: Muss ich meinem Kumpel jetzt die IP meines Routers schicken, oder die meines Rechners, auf dem das Prog gerade läuft?
|
Re: IP Adresse von einem Rechner im INet finden
Zitat:
|
Re: IP Adresse von einem Rechner im INet finden
All right!
|
Re: IP Adresse von einem Rechner im INet finden
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:
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!
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; Manchmal wird zwar irgendwas versendet (beim Dateiversenden), aber es kommt weder eine Botschaft an, noch die Datei! |
Re: IP Adresse von einem Rechner im INet finden
@PhaTTy: Arbeite gerade mit was ähnlichen, was müsste ich dort jetzt wählen, dynamisch oder statisch? Und wie geht's dann weiter?
Mein Kumpel sollte seine IP hinschicken können, bei ihm ist nichts zu beachten. Und ich muss meine hinschicken, allerdings ist bei mir noch n Router im Netzwerk, dahinter zwei Rechner, die ich gern beide mit einspannen würde. Also brauche ich doch sicher 3 dynamische/statische ...? Danke schonmal! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz