Grundlegende Frage zur Servererstellung

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Grundlegende Frage zur Servererstellung

    Ich habe nun auf Grund meiner Bruchlandung mit DirectPlay begonnen mir mit Winsock zu beschäftigen und an sich alles was man über Netzwerkprogrammierung wissen muss.(zumal ich angehender CISCO-Admin bin xD)Nun habe ich nur eine recht grundlegende Frage.

    Ich arbeite an einem Server der auch schon fast fertig ist.Nur habe ich bereits den Server nur mit der IP des eigenen PC´s verbunden(270.0.0.1 wars glaube ich)
    und das ganze mit einem improvisorischen Clienten ausgetestet.
    Das senden und empfangen funktioniert wunderbar.Und alles weitere hat auch problemlos hingehauen.

    Nun möchte ich aber mittels meines improvisorischen Clienten keine Verbindung zum eigenen PC aufbauen lassen sondern von einem beliebigen PC auf meinen
    Server.Dazu müsste ja die IP und der gebundene Port vorhanden sein um die Verbindung zum Server aufzunehmen.

    Wie genau bewerkstellige ich das?Kann ich meinen PC zu testzwecken überhaupt ohne viel Aufwand zu einem Server machen?Also nur um zu überprüfen ob sich andere an anderen Standorten mit meinem Server verbinden lassen können.
    Der eigentliche Server wird dann später noch eingerichtet,aber cih muss ja einen Ausgangspunkt haben an dem ich sehen kann das auch eine Verbindung erstellt wird unabhänig davon von wo der Client gestartet wird.

    Der betreffende Teil:

    Quellcode

    1. addr.sin_family = AF_INET; //Protokollfamile: TCP/IP
    2. addr.sin_port = htons(12345); //Port 12345 wird benutzt(is im Server per bind() bestimmt)
    3. addr.sin_addr.s_addr = inet_addr("127.0.0.1"); //hier is das Problem.....


    Wäre nett wenn mir da jemand Tutorials geben könnte,oder mir erklären könnte wie ich das genau bewerkstellige.
    Ich bin für jede Hilfe unendlich dankbar^^

    MfG Ska
    "A Programmer is just a tool which converts cofein into code!"
    (anonymer Verfasser)
    [IMG:http://www.beepworld.de/memberdateien/members98/skabus/sigc.jpg]
  • also vom code scheint ja alles zu funktionieren, wenn du auf localhost connecten kannst

    bleiben die voraussetzungen um von außen drauf zuzugreifen
    redest du hier von einem lokalen netzwerk oder dem internet?

    im internet wirst du für ein testsystem keine feste IP erhalten
    (es sei denn du arbeitest du einem rootserver oder hast einen anbieter, der das unterstützt)
    willst du deinen pc von extern erreichen, dann musst du einen ddclient installieren und dich bei einem entsprechenden anbieter anmelden
    der client sendet die vom dsl-provider dynamisch zugewiesene ip-adresse dann an einen dd-anbieter wie no-ip.com oder selfhost.
    die ip wird dann wiederum in deren dns server eingespeist, so dass du immer über eine subdomain erreichbar bist.
    z.b. peter1.no-ip.com

    so kannst du deinen rechner von extern erreichen
    du musst natürlich überprüfen, was deine firewall so alles blockt und evtl. den port freigeben
    falls du hinter einem router hängst, musst du den port dann noch auf deinen client leiten - da ja dann nicht dein rechner die provider-ip besitzt, sondern der router
  • Vielen Dank erstmal für die Hilfe^^

    Das hießt also ich muss erst diesen ddclienten installieren dan mich anmelden und über einen subdomain kann ich das ganze dann lauf lassen in diesem Falle
    sähe der Code also dann lediglich so aus!?:

    Quellcode

    1. addr.sin_family = AF_INET; //Protokollfamile: TCP/IP
    2. addr.sin_port = htons(12345); //Port 12345 wird benutzt(is im Server per bind() bestimmt)
    3. addr.sin_addr.s_addr = inet_addr("peter1.no-ip.com "); //hier dann die subdomain?oO


    Fragt sich dann ob eben genantes funktioniert und wo ich so einen DDClienten + subdomain erhalten kann.
    Weißt du das zufällig auch?Kostet das dann zusätzlich was?(wovon ich ausgehe)
    Wäre wirklich dankbar wenn du mir nen Link oder so geben könntest oder mir sagen könntest wie sich das verhält.Auf diesem Gebiet bin ich etwas unerfahren^^

    MfG Ska
    "A Programmer is just a tool which converts cofein into code!"
    (anonymer Verfasser)
    [IMG:http://www.beepworld.de/memberdateien/members98/skabus/sigc.jpg]
  • ja, sollte so funktionieren

    kostet alles nix - meld dich bei www.no-ip.com an
    dort gibts unter downloads auch die passende software für dein betriebssystem

    wenns ans debuggen geht, dann wäre es außerdem vorteilhaft einen portscanner zu benutzen um herauszufinden welche ports verfügbar sind
    vielleicht auch ein paketsniffer um die antworten zu überprüfen, falls es nicht klappt
  • Vielen Dank erstmal für die Hilfe ich weiß echt nicht was ich ohne dieses
    Forum machen würde.^^

    Nun, ich ahb mich bei no-ip.com mal angemeldet und hab dort nun auch einen
    DNS-Server angelegt.Adresse->www.rpgcastle.no-ip.org

    Leider funzt nun mein Client nicht mehr.Ich hab sowohl Server als auch
    Client mal hochgeladen.Falls ihr euch das des besseren verständnisses halber mal ansehen wollt:

    http://skabus.sk.ohost.de/Daten/testClient.rar

    http://skabus.sk.ohost.de/Daten/testServer.rar

    (btw.: behelfsenglisch,nich wundern^^)

    Der Server funzt weiterhin ohen probleme,starte ich allerdings den Clienten
    bekomme cih ein "Das programm hat einen Fehler festgestellt udn muss beendet werden"-fehler.Die betreffende Befehlszeile is diese:


    Quellcode

    1. addr.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);


    Logo,diese weißt ja die Adresse zu....Außerdem habe ich die Adresse wie folgt deklariert:

    Quellcode

    1. LPHOSTENT hostEntry;
    2. ......
    3. hostEntry = gethostbyname("www.rpgcastle.no-ip.org");


    Zwar ist mir relativ klar das es freilich nicht so einfach sein kann,aber da ich wie gesagt auf diesem Gebiet noch nie viel getätigt habe(irgendwann muss man aber dennoch anfangen) weiß ich es nicht anders.
    Der Client stürzt ohne Fehlermeldung ab,weshalb ich auch nicht weiß wo ich einen Lösungsansatz suchen soll.

    Es muss freilich daran liegen das rpgcastle.no-ip.de nicht die absolute Adresse zu meinem PC sein kann,weiß aber dennoch nicht wie ich es bewerkstelligen kann.
    Ich möchte lediglich das andere via Internet eine Verbindung zu meinem PC aufnehmen können und wie in dem Beispiel Nachrichten an den Server gesendet werden können,nur eben von beliebigen PC´s aus.

    Über Literaturen,Hilfen und jegliche Tipps freu ich mich natürlich.
    Danke wiedermal in vorraus^^

    MfG Ska
    "A Programmer is just a tool which converts cofein into code!"
    (anonymer Verfasser)
    [IMG:http://www.beepworld.de/memberdateien/members98/skabus/sigc.jpg]
  • Keiner der mir dan ein bissle unter die Arme greifen kann?
    Ich weiß wie egsagt nur wenig darüber....

    Für nen Literaturverweis oder nen Tutorial oder ähnlcihes wäre ich auch dankbar.
    Weiß da jemand vielleicht was in der richtung?
    Ich häng momentan durch weils
    eben ncih ganz klappt u.u

    Weiterhin danke für jede Art von Hilfe^^

    MfG Skabus
    "A Programmer is just a tool which converts cofein into code!"
    (anonymer Verfasser)
    [IMG:http://www.beepworld.de/memberdateien/members98/skabus/sigc.jpg]
  • Hm danke ich habs eben ausprobiert aber der Fehler besteht weiter.
    Es muss irgendwie eine fehlende Speicherklasse sein oder ein Verweis auf
    einen ungültigen Bereich oder so....

    Nun,scheint als wenn cih da noch etwas spezifischer werden muss....
    Wenn keiner genau wieß wie man sowas macht óò

    Ich weiß nun nciht womit du gepingt hast ich bekomme allerdings folgendes raus wenn cih meinen Server anpinge:



    E:Dokumente udn Einstellungen\Administrator>ping rpgcastle.no-ip.org

    Zeitüberschreitung der Anforderung
    Zeitüberschreitung der Anforderung
    Zeitüberschreitung der Anforderung
    Zeitüberschreitung der Anforderung

    Ping-Statistik für 270.88.31.87:
    Pakete: Gesendet = Empfangen = 0, Verloren = 0 (Verlust 100%)


    Er findet meinen Server scheinbar aber es sieht ncih so aus als wenn ich auf ihn zugreifen könnte oO

    MfG Ska
    "A Programmer is just a tool which converts cofein into code!"
    (anonymer Verfasser)
    [IMG:http://www.beepworld.de/memberdateien/members98/skabus/sigc.jpg]
  • Ich hab mir deinen Code nicht angeguckt. Aber wenns mit ner IP-Adresse geht und bei der DNS Anfrage hängt, dann musst du mal schauen wie das andere hinbekommen haben.
    Vor garnich allzu langer Zeit habe ich hier mal gezeigt wie man nen Client schreibt, da wurde auch gethostbyname() benutzt:
    http://www.easy-coding.de/quelltext-holen-t1663.html#6257
    Is nich schön aber kannst du ja verbessern wenn du magst ;)
  • "newb" schrieb:

    Ich hab mir deinen Code nicht angeguckt. Aber wenns mit ner IP-Adresse geht und bei der DNS Anfrage hängt, dann musst du mal schauen wie das andere hinbekommen haben.
    Vor garnich allzu langer Zeit habe ich hier mal gezeigt wie man nen Client schreibt, da wurde auch gethostbyname() benutzt:
    http://www.easy-coding.de/quelltext-holen-t1663.html#6257
    Is nich schön aber kannst du ja verbessern wenn du magst ;)


    Also ahb mal dein programm ausprobiert udn er gibt einen "Connect FEHLER" aus...
    was mich davon aussgehen lässt das evtl. etwas mit dem DNS Server nciht stimmt....

    Do the Ska
    "A Programmer is just a tool which converts cofein into code!"
    (anonymer Verfasser)
    [IMG:http://www.beepworld.de/memberdateien/members98/skabus/sigc.jpg]
  • Lass dir doch mal nach:

    Quellcode

    1. sprintf(serverip, "%u.%u.%u.%u",
    2. (unsigned char) host->h_addr_list[0][0], (unsigned char) host->h_addr_list[0][1],
    3. (unsigned char) host->h_addr_list[0][2], (unsigned char) host->h_addr_list[0][3]);

    die IP-Adresse mit

    Quellcode

    1. printf("%s", serverip);

    ausgeben. Dann siehste ja ob er die richtige IP-Adresse zum hostname geholt hat.
  • Hmmm daran liegt es offenbar nicht....

    Ich weiß nur nich ob ich das alles mit dem DNS-Server und so weiter
    eingerichtet habe etc.Kann mir niemand sagen wie man das macht?
    Ich hab das Problem jetzt mit dem "Das Programm hat einen Fehler festgetsellt" lösen können....


    Er findet den HostEntry(rpgcastle.no-ip.org) nicht....Ich kann halt nciht auf meinen DNS-Server zugreifen(mit PING gehts ja auch nich).
    Wenn mir jemand genau sagen könnte wie ich bei no-ip oder sonstwo einen Server einrichte und ihn dann über meienn PC laufen lassen kann dann wär das
    Problem denke ich schon beseitigt.

    Aber es lässt sich scheinbar niemand auffinden der sowas schonmal gemacht hat udn niemand scheint zu wissen wie das geht.Sorry wenn ich etwas
    aufgebracht klinge aber ich verzweifle langsam dran ^^"
    Für weitere Hilfe bin cih natürlich dankbar^^

    MfG Ska
    "A Programmer is just a tool which converts cofein into code!"
    (anonymer Verfasser)
    [IMG:http://www.beepworld.de/memberdateien/members98/skabus/sigc.jpg]
  • "Skabus" schrieb:

    Er findet meinen Server scheinbar aber es sieht ncih so aus als wenn ich auf ihn zugreifen könnte oO


    die zeitüberschreitung erhielt ich auch - aber ich weiß ja auch nicht, ob dein PC gerade läuft oder nicht
    zumindest passt sich die IP Adresse an:
    ping rpgcastle.no-ip.org
    PING rpgcastle.no-ip.org (217.88.11.254) 56(84) bytes of data.

    dein ddclient scheint also zu funktionieren

    "Skabus" schrieb:

    Hmmm daran liegt es offenbar nicht....

    d.h.? wird die richtige IP Adresse ausgegeben?
    dass der ping nicht durchkommt hat nicht unbedingt etwas zu heißen - manche firewalls blocken PINGs

    wie siehts denn jetzt eigentlich aus mit der firewall? sitzt du hinter einer firewall?
    die musst du in jedem fall konfigurieren
  • Da bin ich mal wieder^^

    Also,da ich nun in die heiße Phase komme und nun den Server und den Clienten schon zum laufen bekommen habe,wollte ich nun mal wissen->

    Ich habe es mit der statischen IP eines freundes geschafft eine Verbindung herzustellen.Funzt auch alles wunderbar.Aber da der server ja erreichbar sein soll ohne das ich die statische IP dauernd ändern muss, brauche ich ja ne dynamische IP.Mein Kumpel is bei dyndns.com angemeldet.Die dynamische IP lautet

    xcpp.kicks-ass.net

    Rein programmtechnisch habe ich kein Problem.Mein Problem liegt schlicht darin das ich nicht weiß wie ich das bewerkstelligen soll....
    Also momentan sieht die adressierung so aus->




    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr("84.175.0.11");
    addr.sin_port = htons(12345);



    Es sei gesagt das es so funktioniert.Jedoch weiß ich ja das sich die IP meines Kumpels bei seiner nächsten Sitzung wieder ändert.Daher is eine statische IP höchstens zu Testzwecken gut.Ich kann zwar in dem ich mit der Windoofkonsole die Adresse anpinge:

    ping xcpp.kicks-ass.net

    die momentane IP ermitteln,aber wie gesagt will ich ja nich immer die IP angeben müssen.Bewerkstelligt dieses "DeeEnEs"-Programm diese Sache?
    Wie muss ich das dann im Programm realisieren?

    Mit gethostbyname?oder mit inet_addr?

    Für jegliche Hilfe und Tipps bin ich unendlich dankbar.
    btw.:Dies is das letzte Prob was ich damit habe,dann kann
    mein Projekt endlich richtig loslegen^^


    Do the Ska
    "A Programmer is just a tool which converts cofein into code!"
    (anonymer Verfasser)
    [IMG:http://www.beepworld.de/memberdateien/members98/skabus/sigc.jpg]
  • Problem hat sich erledigt...Strang kann geschlossen werden(falls man das hier macht^^).

    Ich habs herausgefunden wie es geht.
    Vllt. interessiert es jemanden wie ich das bewerkstelligt habe und will es auch niemanden vorenthalten.Im Grunde ist es ganz einfach(aber man muss halt drauf kommen)->

    Also man besorgt sich z.B. bei www.dyndns.com nen freeaccount und legt sich dort nen host an.Diese Hostadresse reicht vollkommen aus um aus seinem PC mittels der Software nen Server zu machen.Naja man kann die von d0nut gennanten Probgramme optional nutzen.Natürlich muss der jeweilige Port freigeben werden über die Einstellungsseite des Routers.

    Das Problem ist keiner der gefunden Tutorials beschreibt exakt genug was man tun muss um eine verbindung mit einer allgemeingültigen Adresse herzustellen.
    Im Grunde ersetzt man die folgende zeile

    Quellcode

    1. addr.sin_addr.s_addr = inet_addr("123.456.789.1");


    durch diese Zeile->


    Quellcode

    1. memcpy(&(addr.sin_addr),gethostbyname("peter1.kicks-ass.net")->h_addr_list[0],4);


    Dann funktioniert es auch mit der Hostadresse.Man muss also die Adresse in die adressliste(h_addr_list) aufrufen und das Ergebniss in die vorgeschriebenen addr.sin_adrr schreiben muss.Sie size_tz am ende muss natürlich auf 4 gesetzt werden da die IP adresse(zumindest noch) aus 4 stellen besteht(zwischen 0.0.0.0 und 255.255.255.255).

    So hjat es zumindest bei mir funktioniert.Sehr schön dann kann mein Projekt ja endlich weitergehen.
    Ich bedanke mich nochmal ganz herzlich bei allen die mir geholfen haben^^

    MfG Ska
    "A Programmer is just a tool which converts cofein into code!"
    (anonymer Verfasser)
    [IMG:http://www.beepworld.de/memberdateien/members98/skabus/sigc.jpg]