Richtige Netzwerkadapteradresse finden.

  • Moin

    Ich hab ein problem ich will die netzwerk IP eines PC mit der er sich zum router verbindet und dan in das internet.

    weil @IPADRESS sagt ja nur was auch wenn ich die passende nummer hab aber die kann auf jedem pc anders sein kann ja 1 oder 2 oder 3 sein^^

    ich müsste halt immer genau wissen mit wlechem netzwerk adapter der pc in das web geht......

    gibt es da ne möglichkeit?

  • OK hab es mir angegugt aber das löst mein problem nicht^^

    was den noch das problem märe das beide netzwerkadapter benutzt werden eins für crosover oder heimnetzwerk.

    und eins für das innternet.....
    da ist ja dan klat das beide netzwerkadapter voll konfiguriert sind und fallss sie mauell konfiguriert sind bekomme ich wieder die volle ausgabe zurück^^

  • ....sagmal

    wenn ich TCP listen benutze sag ich ja die ip 192.168.178.20 als meine netzwek ip

    ich brauche das jetz für das erste nur zum epfangen das programm soll hinter net router laufen...

    also ip müsste doch auch 127.0.0.1 gelten ????

    mus doch dan nur der tcp port auf mein rechner in der router firewall offen seon oder sehe ich das jetz flasch?

  • Versuchs doch mal so: (es wird der Adapter gesucht, der am besten für eine Verbindung zu google geeignet ist)

    Spoiler anzeigen
    [autoit]


    Global Const $tagIP_ADAPTER_INFO = "ptr Next; DWORD ComboIndex; char AdapterName[260];char Description[132]; UINT AddressLength; BYTE Address[8]; dword Index; UINT Type;" & _
    " UINT DhcpEnabled; ptr CurrentIpAddress; ptr IpAddressListNext; char IpAddressListADDRESS[16]; char IpAddressListMASK[16]; DWORD IpAddressListContext; " & _
    "ptr GatewayListNext; char GatewayListADDRESS[16]; char GatewayListMASK[16]; DWORD GatewayListContext; " & _
    "ptr DhcpServerNext; char DhcpServerADDRESS[16]; char DhcpServerMASK[16]; DWORD DhcpServerContext; " & _
    "int HaveWins; " & _
    "ptr PrimaryWinsServerNext; char PrimaryWinsServerADDRESS[16]; char PrimaryWinsServerMASK[16]; DWORD PrimaryWinsServerContext; " & _
    "ptr SecondaryWinsServerNext; char SecondaryWinsServerADDRESS[16]; char SecondaryWinsServerMASK[16]; DWORD SecondaryWinsServerContext; " & _
    "DWORD LeaseObtained; DWORD LeaseExpires;"

    [/autoit] [autoit][/autoit] [autoit]

    Func _IPbyAdapterIndex($Index)
    ; Prog@ndy
    Local $dll, $ret, $adapterBuffer, $adapterBuffer_pointer, $return, $adapter, $ptr, $TempDisplayName,$FoundIP
    $dll = DllOpen("Iphlpapi.dll")
    $ret = DllCall($dll, "dword", "GetAdaptersInfo", "ptr", 0, "dword*", 0)

    [/autoit] [autoit][/autoit] [autoit]

    $adapterBuffer = DllStructCreate("byte[" & $ret[2] & "]")
    $adapterBuffer_pointer = DllStructGetPtr($adapterBuffer)
    $return = DllCall($dll, "dword", "GetAdaptersInfo", "ptr", $adapterBuffer_pointer, "dword*", $ret[2])
    $adapter = DllStructCreate($tagIP_ADAPTER_INFO, $adapterBuffer_pointer)
    If Not @error Then
    Do

    If DllStructGetData($adapter, "Index") = $Index Then
    $FoundIP = DllStructGetData($adapter, "IpAddressListADDRESS")
    ExitLoop
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $ptr = DllStructGetData($adapter, "Next")
    $adapter = DllStructCreate($tagIP_ADAPTER_INFO, $ptr)
    Until @error
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $adapterBuffer = ""
    $adapterBuffer_pointer = ""
    DllClose($dll)
    If $FoundIP = "" Then Return SetError(1, 0, "0.0.0.0")
    Return $FoundIP
    EndFunc ;==>_IPbyAdapterName

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    TCPStartup()

    [/autoit] [autoit][/autoit] [autoit]

    $aRet = DllCall("Ws2_32.dll", "int", "inet_addr", "str", TCPNameToIP("google.de")) ; numerische Adresse im Internet holen
    $aRet2 = DllCall("iphlpapi.dll", "int", "GetBestInterface", "ulong", $aRet[0], "DWORD*", 0) ; AdapterIndex für beste Verbidnugn finden
    MsgBox(0, '', _IPbyAdapterIndex($aRet2[2])) ; AdapterIndex zu IP-Adresse zuordnen

    [/autoit]


    Du kannst aber auch mal 127.0.0.1 versuchen oder IP einfach leer lassen ( "" ) glaube ich.

    • Offizieller Beitrag

    Du mußt nicht nur die Firewall auf dem Port öffnen , sondern auch eine NAT-Regel erstellen. Diese NAT-Regel brauchst du damit von Extern auf deine Interne IP, also dein Rechner zugegriffen werden kann . Irgendiwe muß dein Router ja wissen wohin er die Anfragen an einem Port leiten soll.

  • ja also mein router verlangt bei der portfreigabe immer eine Ip aderesse wohin damit also war für mich selber die Nat regel nicht erwähnenswert ohne ip läst ernichtmal die portfreigabe zu^^