![]() |
Moin Hansa,
Zitat:
Das zeigt nur ein Class C Netz mit privaten Adressen an. Ob ich die nun per DHCP verteile oder statisch spielt dabei doch keine Rolle. |
Hi Ihr alle!
Also ich hab mal das Tut ausprobiert, welches hier in diesem Thread gelinkt wurde, und das hat auch alles einwandfrei geklappt, auch über LAN, nicht nur über localhost. Jetzt hab ich also so ne kleine Anwendung geschrieben und hab eine simple Frage: 1. ich möchte nicht, dass die ip fest im Programm verankert ist, weil ich dann jedesmal, wenn sich die ip vom server ändert auch die ip umprogrammieren muss => umständlich. Jetzt habe ich natürlich schon statt einem fest einprogrammierten Wert eine text-input-zeile gemacht, und das klappt auch wunderbar, ABER! ich möchte, dass das Programm bei einer falsch eingegebenen IP, oder einem fehlgeschlagenen Connect-Versuch eine showmessage ausgibt, anstatt zu siffen, so dass man es erneut Probieren kann. Ich hab das dann mal mit try/except versucht, das Problem ist nur, dass das nicht funkioniert, weil die Anweisungen alle durchgeführt werden, während versucht wird die Verbindung aufzubauen, welches bedeutet, dass die Verbindung keinen Einfluss auf try/except hat. |
Weiteres Problem:
Für die Kommunikation zwischen den Programmen im Dialog, nicht nur im Monolog ist es ja auch von Nöten, dass ich vom server aus Daten an den Client schicke, was ja einfach wäre, wenn ich mit festen IPs arbeiten würde. Was ich mir vorstelle ist ein Tool, was gleichzeitig server und client ist und seine eigene ip beim connecten mitschickt. D.h. dass auf dem anderen PC auch das Tool läuft, ich schicke an dieses Tool meine eigene ip und baue eine Verbindung auf, woraufhin das Tool auf dem anderen PC eine Verbindung zu mir aufbaut. So, 1.: Geht das? 2.: Wie geht es? 3.: Ist das sinnvoll, oder geht es besser? 4.: Wie lese ich meine IP aus? Gruss Jan |
Hier beschreibt Mathias Simmack, wie man das IP-Adress-Eingebefeld benutz:
![]() Dann brauchst du dich schon mal nicht um die Kontrolle der Eingabe zu kümmern. |
zu Punkt 4. Deine momentane Internet IP liest du so aus:
Code:
Mfg Salomon
function GetLocalIPs: String;
type PPInAddr= ^PInAddr; var wsaData : TWSAData; HostInfo : PHostEnt; HostName : Array[0..255] of Char; Addr : PPInAddr; begin if WSAStartup($0102, wsaData) <> 0 then Exit; try if GetHostName(HostName, SizeOf(HostName)) <> 0 then begin result:=''; Exit; end; HostInfo:= GetHostByName(HostName); if HostInfo=nil then begin result:=''; Exit; end; Addr:=Pointer(HostInfo^.h_addr_list); if (Addr=nil) or (Addr^=nil) then begin result:=''; Exit; end; if not (copy(strpas(inet_ntoa(addr^^)),1,7) = '192.168') then begin result:=StrPas(inet_ntoa(Addr^^)); inc(Addr); end else begin inc(addr); while Addr^ <> nil do begin result:=StrPas(inet_ntoa(Addr^^)); inc(Addr); end; end; finally WSACleanup; end; end; |
Guten Tag,
@luckie: Das ist ja schön und gut, aber ist eigentlich nicht was ich suche, denn ob die ip Addresse von der Grammattik her richtig eingegeben ist garantiert ja noch lange nicht, dass es unter der ip auch einen server zu finden gibt, daher wollte ich das einfach so machen: der client probiert einfach aus, was immer er eingegeben bekommt, egal ob das nun eine ip Addresse ist, oder nicht, und checkt, ob er unter dem string zu einem server conn. kann, wenn nicht so gibt er eine "Connection failed" message aus. @Salomon thx, ist ja ne Menge aufwendiger als ich gedacht hätte, gleich mal ausprobieren. thx Jan |
@ Jan
Was für ne IP hast du denn in deinem Lokalen Netzwerk (um auf Christian´s Posting zurücktzukommen)? MfG doc |
Zitat:
Dann sende doch einen Ping an die Adresse. Wenn was zurückkommt, dann kanst du weitermachen im Text. Ansonsten brichst du ab. |
Moin Zusammen,
da man ja als Host auch den Rechnernamen angeben kann (entsprechende Namensauflösung über DNS Server oder LMHOST/HOSTS vorausgesetzt) könnte man auch an zwei Eingabefelder denken. Eines nur für IP Adresse, eines für Rechnernamen. |
Hi alle,
also das mit der Fehlerquelle reduzieren is ja schön und gut, aber dadurch kann es ja immernoch passieren, dass das Programm sifft, also müsste ich trotzdem den gegeneben Fall programmieren, dass der server nicht vorhanden ist. Zitat:
Zitat:
@ Salomon: Welche units muss ich einbinden, um bei deiner ip-Funktion nicht 1000 "Bezeichner Unbekannt"-Fehler zu bekommen? thx für alle Antworten bleibt mir gewogen :] Jan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 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