• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Publiczny serwer TCP/IP czy jakoś tak

Object Storage Arubacloud
0 głosów
487 wizyt
pytanie zadane 15 kwietnia 2022 w Sieci komputerowe, internet przez Mateusz Mariasik Początkujący (330 p.)
zamknięte 20 kwietnia 2022 przez Mateusz Mariasik

Hej, mam pytanie, zaczynam zabawę z protokołami tcp i udp, wszystko idzie w porządku, umiem postawić sobie samemu serwer na prywatnym ip. A mam teraz pytanie czy ktoś byłby w stanie mi wytłumaczyć (lub dać jakiś link do tego) jak stworzyć taki serwer online, aby np mój kolega innej części kraju mógł dołączyć ?

Uprzedzając takie pytania to używać będę klas SFML'a do obsługi tych protokołów i korzystając z tej biblioteki mam napisany prowizoryczny kod by tylko sprawdzić czy połączenie faktycznie działa.

#include <SFML/Network.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;
int main()
{
    srand(time(NULL)); setlocale(LC_ALL, "");


    string opcja;

    cout << "[k] / [s]  ? : ";
    cin >> opcja;
    if (opcja == "k") { // KLIENT
        sf::TcpSocket* connS; // gniazdo połączenia do serwera
        connS = new sf::TcpSocket;
        if (connS->connect("127.0.0.1", 10000, sf::seconds(5.0f)) != sf::Socket::Done) { cout << "Nie mogę połączyć się z serwerem.\n "; return 404; }
        sf::Packet nr;
        int x = 0;
        do {
            connS->receive(nr); // funkcja receive czeka na dane
            nr >> x;
            cout << "Pobrałem nr =  " << x << endl;
        } while (x < 100);
    }
    else { // SERWER
        sf::TcpListener listener; // nasłuch na porcie
        if (listener.listen(10000) != sf::Socket::Done) { cout << "Błąd nasłuchiwania na porcie.\n"; return 504; } // uruchomienie nasluchu na porcie
        else cout << "Trwa nasłuch na porcie 10000:\n";
        sf::TcpSocket* connC;
        connC = new sf::TcpSocket;
        // gdy nasłuch coś namierzy, tworzy się połączenie
        if (listener.accept(*connC) != sf::Socket::Done) { cout << "Nie udało się otworzyć gniazda połączenia.\n"; return 505; } // oczekiwanie na klienta na dolaczenie
        else { cout << "JEST! Klient wbił!\n"; }
        sf::Packet psend;
        int i = 0;
        // co 1 sekundę coś wysyłam do klienta
        while (1) {
            psend.clear(); // czyszczę zawartość paczuszki
            psend << (int)i;
            sf::sleep(sf::milliseconds(1000)); // dzięki temu nie zabijam procesora
            if (connC->send(psend) != sf::Socket::Done) { cout << "sendParameters error\n"; break; }
            else { cout << "Wysłałem " << i++ << " do klienta.\n"; }
        }
    }
    cout << "\nSerwer off\n"; 

    return 0;
}

Kod ten fajnie działa na mojej prywatnej sieci, jednakże co zrobić abym mógł się połączyć z kolegą?

komentarz zamknięcia: Otrzymałem satysfakcjonującą odpowiedź
2
komentarz 15 kwietnia 2022 przez Oscar Nałogowiec (29,290 p.)

Temat poruszany już setki razy.

  1.  Samym programem nie rozwiążesz tego problemu. Być może nawet programu nie będziesz musiał ruszać (wróc - musisz przewidzieć podanie adresu IP).
  2. Musisz posiadać pod swoją "władzą" publiczny adres IP. Może być u ciebie w domu, może być u kolegi, może być gdzieś w sieci (VPS)
  3. Najpierw sprawdź czy już nie masz w domu takiego adresu - w tym celu wejdź na stronę konfiguracyjnę routera i sprawdź jaki jest jego adres WAN. Jeśli nie zaczyna na 10, 172. lub 192.168 to masz adres publiczny. Wystarczy przekierować port 10000 na twój komputer, podać koledze ten adres WAN z routera i gotowe.
  4. Niech kolega zrobi to samo - tyle że wtedy to on będzie musiał uruchomić opcje serwer.
  5. Jak wszystko wyżej nie pomoże musisz trochę pokombinować. Opcji jest wiele, w niektórych potrzebne będą pewne wydatki. Po pierwsze sprawdź czy twój dostawca internetu nie oferuje adresów publicznych lub czy może przekierować port. W następnej kolejności to już cała gama rozwiązań dostępnych w internecie - potrzebujesz dostęp do jakiegoś servera w sieci z adresem publicznym.
komentarz 20 kwietnia 2022 przez Mateusz Mariasik Początkujący (330 p.)
Może źle sformułowałem pytanie, bo byłem świadom, że sam program mi nie pomoże. Chciałem tylko się dowiedzieć jak wsm ogarnąć taki adres publiczny, jednak otrzymałem na to odpowiedź więc dziękuję

Podobne pytania

0 głosów
2 odpowiedzi 535 wizyt
pytanie zadane 14 marca 2022 w Sieci komputerowe, internet przez peleni Nowicjusz (230 p.)
+1 głos
2 odpowiedzi 1,416 wizyt
+1 głos
2 odpowiedzi 601 wizyt
pytanie zadane 9 lutego 2022 w Sieci komputerowe, internet przez Haxiu Nowicjusz (190 p.)

92,536 zapytań

141,377 odpowiedzi

319,454 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...