Sockety i połączenia do IP

0

Witam. Chciałem zapytać się jak połączyć się ze strony klienta do IP serwera.
W serwerze ustawiam port na 7777.

Chciałbym uruchomić mój czat na komputerze kolegi. Kolega ten musi łączyć się na moje IP, ale gdy próbuję uruchomić Clienta na tym samym komputerze, na którym stoi serwer, wpisując zamiast localhost moje IP, wyrzuca mi błąd.

Jak mam przerobić kod, aby kolega mógł połączyć się ze mną?

Server.java

try{
    serverSocket = new ServerSocket(port);   // Port = 7777
    socket = serverSocket.accept();
}catch(Exception ex){
    ex.printStackTrance();
}

Client.java

try{
    socket = new Socket(ip,port);   // Port = 7777, w miejscu ip wpisuje moje IP (IP Serwera)
}catch(Exception ex){
    ex.printStackTrance();
}

dodanie znaczników <code class="java"> - fp

0

Hmmm, pewnie działa tylko na localhost i na 127.0.0.1, wina może byc spowodowana tym, że musisz wybrać interfejs na którym ma się komunikować Twoja aplikacja serwerowa. Miałem podobny przypadek, jednak inny problem bedziesz miał przy łączeniu się client <internet> <serwer>, tutaj musisz mieć najlepiej statyczne ip.
Do tego bys mógł podac swoje IP wystarczy nadać mu odpowiedni interfejs i jest tutorial:
http://docs.oracle.com/javase/tutorial/networking/nifs/retrieving.html <- sorki nie ten link

Mam nadzieję, że troche nakierowałem.

0

No ale gdzie ten kolega jest? W tej samej sieci?

Masz zewnętrzne IP? Jeśli masz to możliwe, że musisz pobawić się w opcjach routera tak aby przekierowywał żądania z zewnętrznego IP na Twoje wewnętrzne IP - forwarding.

0

Po pierwsze jaki błąd? Po drugie czy pingujesz tamten komp a tamten komp Ciebie? Po trzecie firewall - przepuszcza na tym porcie?

0

Kolega jest poza routerem, w innej sieci, lecz testuje ten program również na moim 2 komputerze w tej samej sieci i tam również nie działa :/

Błąd jest taki że wgl. się nie łączy.
W serwerze wpisuje port 7777 i uruchamiam go na komputerze #1. Clienta uruchamiam na komputerze #2 z tej samej sieci i wpisuje "localhost", uruchamiam i komputer #2 nie może odnaleźć serwera...

0

jak wpisujesz na #2 localhost to próbuje ci się podłączyć do #2 nie do #1, musisz podać adres #1

0

uruchom -> cmd -> ipconfig -> szukaj adresu IPv4

Przy testach na drugim komputerze w kliencie wpisz ten adres.

Przy testach u kumla w kliencie trzeba IP zewnetrzne wpisac.
Przed testami u kumpla musisz zrobić ip forwarding w routerze tak aby requesty na zewnetrze IP szly na Twoje wewnetrzne.

0

Z adresem IPv4 działa mi na 2 komputerach z 1 sieci.

Jednak nie wiem jak mam zrobić ten "ip forwarding" :/

0

Nie musi byc koniecznie port forwarding, jest wiele innych technik, jak: hole punching, upnp...
Tylko, ze istnieje wiele roznych NATow mniej lub bardziej sympatycznych

Wrzucam kilka linkow, ktore moga sie przydac
https://help.ubuntu.com/community/ServersBehindNAT
http://www.raidenhttpd.com/en/manual/en-web-server-after-nat.html

Ogolnie zalezy w glownej mierze od systemu/sposobu, ktory chcesz uzyc, najlepiej by bylo jakby uzytkownik aplikacji nie musial za wiele robic.

0

Czyli mam rozumieć, że chodzi tak jakby o odblokowanie portu? No to już na komputerze #1 gdzie jest host postawiony mam odblokowany port 7777. Mam tak samo jak podałeś w 2 linku, tyle że z moim routerem.

Wpisując moje zewnętrzne IP i mając odblokowany port, czat nadal nie może się połączyć, ale tym razem z komputerem kolegi poza moją siecią. Co mam zrobić? :c

0

Z tym port forwarding to można zalogować się na router i tam są zazwyczaj takie opcje. Użytkownik aplikacji nic nie musi robić - ustawiane jest to tylko tam gdzie jest server.
Piszę o takim rozwiązaniu bo takie sam stosowałem, innych nie ale na pewno @n0name_l mówi prawdę :)

0

Problem rozwiązany.
Błąd stał po stronie routera. Odblokowałem port i już wszystko działa. Dziękuję wszystkim za wskazówki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1