Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Internet verbindung über DynDNS

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 24.02.2007, 14:46    Titel: Internet verbindung über DynDNS Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 24.02.2007, 14:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 25.02.2007, 17:41    Titel: Antworten mit Zitat

Ich hab das Beispiel "http_get.bas" nicht weinen
Was ist mit "resolven" gemeint?

MFG Thorben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 25.02.2007, 17:46    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz