Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
isiprimax
Anmeldungsdatum: 02.01.2009 Beiträge: 77
|
Verfasst am: 23.08.2010, 19:38 Titel: Dynamische IP auflösen und als String ausgeben |
|
|
Hi, ich versuche seit paar Stunden ein Programm zu schreiben, mit dem ich folgendes machen kann.
Beispiel:
cmd> dynip.exe irgendeine.dyndns.ip
ausgabe> ip ist -> 188.99.77.22
code:
Code: | #Include "win/winsock2.bi"
Dim host As hostent Ptr
Dim ip_i As in_addr
Dim zstr_hostname As ZString * 256
'-------------------------------------------------------------[ init winsock]{
Dim wsaData As WSAData
If( WSAStartup( MAKEWORD( 1, 1 ), @wsaData ) <> 0 ) Then
Print "Error: WSAStartup failed"
End 1
End If
'-------------------------------------------------------------[ init winsock]}
zstr_hostname = "google.de"
host = gethostbyname(zstr_hostname)
If host = 0 Then
Print "Fehler!"
Else
Print "Server Name -> "; *host->h_name
'->>addr.s_addr = *(u_long *) remoteHost->h_addr_list[i++];
Print "Server IP -> "; inet_ntoa(ip_i)
EndIf
Sleep
'-------------------------------------------------------------[ quit winsock]{
WSACleanup
'-------------------------------------------------------------[ quit winsock]}
End |
Ich habe schon ein c++ programm das genau das macht was ich will, nur diese zeile
Code: |
addr.s_addr = *(u_long *) remoteHost->h_addr_list[i++];
|
macht mir Probleme. Ich weiss nicht wie ich sie nach FB übersetzen kann.
Hoffe einer von euch kann mir Tipp geben.
mfg |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 23.08.2010, 20:03 Titel: |
|
|
Code: | i += 1
addr.s_addr = *Cast(u_long ptr, remoteHost->h_addr_list(i)) |
|
|
Nach oben |
|
 |
isiprimax
Anmeldungsdatum: 02.01.2009 Beiträge: 77
|
Verfasst am: 23.08.2010, 22:30 Titel: |
|
|
Ich hab das getest, error 7 : Expected ')' found '(' ....
Wenn ich daraus h_addr_list[i] mache (i hat wert von 1) stürzt das Programm ab.
Hat wer vielleicht funktionierendes Beispiel, wie man aus einer DynamischenIP eine Aufgelöste (zb.: 192.168.2.114) macht?
Die Ip scheint in einer Ulong Variable zu sein. Wie Bekomme ich sie nun in das andere Format? Dachte das inet_ntoa() convertiert die.
mfg andy |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 23.08.2010, 23:29 Titel: |
|
|
Vorneweg: Ich habe von der Materie nicht die leiseste Ahnung ... aber du kannst dir die IP-Variable ja mal im Hexadezimalformat anzeigen lassen, vielleicht hilft das bei der Analyse. Da eine IP-Adresse aus 4 Byte-Werten besteht und diese genau in ein ULONG passen, könnte ich mir vorstellen, dass hier ein Zusammenhang besteht. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
isiprimax
Anmeldungsdatum: 02.01.2009 Beiträge: 77
|
Verfasst am: 24.08.2010, 00:23 Titel: |
|
|
Danke an alle!
Nun geht es.
Hier die Lösung:
Code: |
#Include Once "win/winsock2.bi"
#Include Once "crt/ctype.bi"
Dim wsaData As WSADATA
Dim iResult As Integer
Dim i As Integer = 0
Dim remoteHost As hostent Ptr
Dim host_name As WString * 256
Dim addr As in_addr
If __FB_ARGC__ <= 1 Then
Print"--- DynIP v 1.0"
Print
Print" benutzen -> "; *__FB_ARGV__[0] ;" <Serverhostname>"
Print" beispiel -> "; *__FB_ARGV__[0] ;" name.dyn.ip"
Print
print"--- autor isiprimax @ 8/2010"
End 1
EndIf
iResult = WSAStartup(MAKEWORD(2,2), @wsaData)
If iResult <> 0 Then
Print "Winsock Fehler!", iResult
EndIf
host_name = *__FB_ARGV__[1]
If isalpha(host_name[0]) <> 0 Then
Print"--- DynIP v 1.0 autor isiprimax @ 8/2010"
Print
remoteHost = gethostbyname(host_name)
Else
Print"--- DynIP v 1.0 autor isiprimax @ 8/2010"
Print
addr.s_addr = inet_addr(host_name)
EndIf
If remoteHost = NULL Then
End 1
Else
Print" Server Dyn IP -> "; *remoteHost->h_name
If remoteHost->h_addrtype = AF_INET Then
i += 1
addr.s_addr = *Cast(ULong Ptr, *remoteHost->h_addr_list)
Print" Server IP -> "; *inet_ntoa(addr)
EndIf
EndIf
WSACleanup
End 0
|
Zuletzt bearbeitet von isiprimax am 24.08.2010, 23:57, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 24.08.2010, 16:25 Titel: |
|
|
Lesen kannst du wohl nicht so besonders gut... |
|
Nach oben |
|
 |
isiprimax
Anmeldungsdatum: 02.01.2009 Beiträge: 77
|
Verfasst am: 24.08.2010, 23:54 Titel: |
|
|
Wie meinste das?
Hat doch alles geklappt. Hab das was ich wollte.
mfg Andy |
|
Nach oben |
|
 |
|