[SFML, C++] Komunikacja klient-serwer (TCP) via global ip
Ostatnio zmodyfikowano 2015-01-11 21:43
marianexyx Temat założony przez niniejszego użytkownika |
[SFML, C++] Komunikacja klient-serwer (TCP) via global ip » 2015-01-11 15:34:09 Staram się skomunikować klienta z serwerem (TCP) używając globalnego IP. Na lokalnym mi się udawało, natomiast na globalnym już nie. Wyczytałem, że może to być kwestia routera, tj. port forwardingu. Dodałem zatem regułę na routerze, ale dalej nic. Próbowałem na jednym globalnym ip podłączając oba komputery do routera nadając takie samo ip (to może tak działać?) oraz próbowałem podłączać się klientem poprzez inny internet z tabletu, ale też nic. Gdzie może być przyczyna? Poniżej kod i screenshoot reguły. #include <SFML\Network.hpp> #include <iostream> #include <conio.h>
using namespace sf; using namespace std;
int main() { UdpSocket socket; unsigned short s = 50001; unsigned short k = 50002; socket.bind( s ); string tmp = ""; Packet pakiet; IpAddress ip_k = "192.168.0.12"; socket.receive( pakiet, ip_k, k ); pakiet >> tmp; cout << tmp; getch(); }
#include <SFML\Network.hpp> #include <iostream> #include <string> #include <conio.h>
using namespace sf; using namespace std;
int main() { UdpSocket socket; unsigned short s = 50001; unsigned short k = 50002; socket.bind( k ); string tmp = "String od klienta"; Packet pakiet; IpAddress ip_s = "192.168.0.11"; pakiet << tmp; socket.send( pakiet, ip_s, s ); getch(); }
|
|
DejaVu |
» 2015-01-11 17:41:33 Musisz ustawić adres docelowy na routerze na IP komputera lokalnego, który ma dostawać komunikację na określonym porcie. Komunikacja wówczas będzie przez router przekierowywana z Twojego globalnego IP:port na Twój określony komputer w sieci lokalnej. |
|
marianexyx Temat założony przez niniejszego użytkownika |
» 2015-01-11 21:43:22 Dopiero gdy to napisałeś zauważyłem jakie to oczywiste :D W każdym razie po wpisaniu mojego lokalnego IP nie ma zmian. Próbowałem znów zmieniać porty, otwierać wszystkie możliwe porty, zamieniać serwer z klientem, wrzucać w reguły wszystkie lokalne adresy komputerów, ustawiać typ na podwójny, podmieniać internet i dalej działa tylko łączenie poprzez lokalne IP. Próbuję dalej, lecz niestety nie znam dobrze zasad rządzących internetem i nie wiem gdzie gubi mi się informacja. Polecali w internetach program Wireshark, ale mnogość informacji i opcji mnie tam przeraża. Edit: Ściągnięty program był w stanie dobrać się do otwartych przeze mnie portów: Edit2: Znalazłem błąd. Mam pomieszany kod. Chciałem łączyć się przez TCP, a w kodzie używam socketów UDP. Kod był zlepiany z innego gotowego programu, z którego chciałem wywnioskować działanie biblioteki. Zajrzałem do dokumentacji i zauważyłem gdzie były błędy. Przepraszam za kłopot :P. I dziękuję za podpowiedź dot. port forwardingu- musiałbym to zmienić tak czy inaczej. |
|
« 1 » |