 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 24.02.2007, 14:46 Titel: Internet verbindung über DynDNS |
|
|
Hallo,
hat einer von euch eine Idee wie ich über eine DynDNS z.B. benutzer.serveftp.net mich mit einem andren rechner verbinden kann.
Bis jetzt hab ichs mit der Winsock lib gemacht aber ich musste ständig nach der ip des anderen rechners fragen um sie in mein Prog einzugeben.
Hab jetzt an eine DynDNS gedacht weiß aber nicht wie ich das machen soll.
MFG Thorben |
|
Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 24.02.2007, 14:55 Titel: |
|
|
Zunächst musst du einen DynDNS-Account einrichten für den PC, und den Cleint auf diesem installieren. Danach musst du die IP des jeweiligen Gegenübers in deinem Programm resolven. Dies ist sehr gut mit der SDL_Net möglich, aber auch mit der WinSOCK gehts rel. einfach.
Beispiele hierfür sind http_get.bas im Examples/Windows/WinSock oder sdlnet_httpget.bas in Examples/SDL (bei letzterem bin ich mir nimmer sicher) |
|
Nach oben |
|
 |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 25.02.2007, 17:41 Titel: |
|
|
Ich hab das Beispiel "http_get.bas" nicht
Was ist mit "resolven" gemeint?
MFG Thorben |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 25.02.2007, 17:46 Titel: |
|
|
resolven heißt auflösen und was soll das heißen, du hast das Beispiel nicht? Code: | ''
'' simple http get example using the Winsock API
''
option explicit
option escape
#include once "win/winsock.bi"
const RECVBUFFLEN = 8192
const NEWLINE = "\r\n"
const DEFAULT_HOST = "www.freebasic.net"
declare sub gethostandpath ( src as string, hostname as string, path as string )
declare function resolveHost ( hostname as string ) as integer
'' globals
dim hostname as string
dim path as string
'' check command-line
gethostandpath command$, hostname, path
if( len( hostname ) = 0 ) then
hostname = DEFAULT_HOST
end if
'' init winsock
dim wsaData as WSAData
if( WSAStartup( MAKEWORD( 1, 1 ), @wsaData ) <> 0 ) then
print "Error: WSAStartup failed"
end 1
end if
'' resolve name
dim ip as integer
dim s as SOCKET
ip = resolveHost( hostname )
if( ip = 0 ) then
print "Error: resolveHost failed"
end 1
end if
'' open socket
s = opensocket( AF_INET, SOCK_STREAM, IPPROTO_TCP )
if( s = 0 ) then
print "Error:"; WSAGetLastError; " Calling: socket()"
end 1
end if
'' connect to host
dim sa as sockaddr_in
sa.sin_port = htons( 80 )
sa.sin_family = AF_INET
sa.sin_addr.S_addr = ip
if ( connect( s, cast( PSOCKADDR, @sa ), len( sa )) = SOCKET_ERROR ) then
print "Error:"; WSAGetLastError; " Calling: connect()"
closesocket( s )
end 1
end if
'' send HTTP request
dim sendbuffer as string
sendBuffer = "GET /" + path + " HTTP/1.0" + NEWLINE + _
"Host: " + hostname + NEWLINE + _
"Connection: close" + NEWLINE + _
"User-Agent: GetHTTP 0.0" + NEWLINE + _
NEWLINE
if( send( s, sendBuffer, len( sendBuffer ), 0 ) = SOCKET_ERROR ) then
print "Error:"; WSAGetLastError; " Calling: send()"
closesocket( s )
end 1
end if
'' receive until connection is closed
dim recvbuffer as zstring * RECVBUFFLEN+1
dim bytes as integer
do
bytes = recv( s, recvBuffer, RECVBUFFLEN, 0 )
if( bytes <= 0 ) then
exit do
end if
'' add the null-terminator
recvbuffer[bytes] = 0
'' print buffer as a string
print recvbuffer
loop
print
'' close socket
shutdown( s, 2 )
closesocket( s )
'' quit winsock
WSACleanup
'':::::
sub gethostandpath( src as string, hostname as string, path as string )
dim p as integer
p = instr( src, " " )
if( p = 0 or p = len( src ) ) then
hostname = trim( src )
path = ""
else
hostname = trim( left( src, p-1 ) )
path = trim( mid( src, p+1 ) )
end if
end sub
'':::::
function resolveHost( hostname as string ) as integer
dim ia as in_addr
dim hostentry as hostent ptr
'' check if it's an ip address
ia.S_addr = inet_addr( hostname )
if ( ia.S_addr = INADDR_NONE ) then
'' if not, assume it's a name, resolve it
hostentry = gethostbyname( hostname )
if ( hostentry = 0 ) then
exit function
end if
function = *cast( integer ptr, *hostentry->h_addr_list )
else
'' just return the address
function = ia.S_addr
end if
end function
| Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|