Wymiana danych między komputerami

0

Robiłem kiedyś połączenie między dwoma komputerami w TCP/IP, no ale było to na zasadzie klient-serwer. Na jednym komputerze musiałem mieć odpalony serwer TcpListener, z odblokowanym portem, ( + ew. przekierowanym firewallem), a na drugim było wygodnie bo był TcpClient. No ale jak mówię nie jest to zbyt wygodne i dobre wyjście, nawet do stworzenia prostego komunikatora.

Interesuje mnie temat pośredniczenia w takich operacjach serwera (to pewnie wymagało by znajomości PHP?) lub wymiany danych P2P tak, by nie trzeba było stawiać serwera na jednym z komputerów (co zresztą nie jest zbyt bezpieczne dla tego komputera).
Czy moglibyście mi coś na ten temat powiedzieć?

0

Podczas transmisji TCP zawsze jest strona która połączenie nawiązuje i strona na połączenie oczekująca, więc jeden z klientów musi być tak zwanym "Serwerem". Rozwiązaniem może być Protokół bezpołączeniowy UDP.

0
grangu napisał(a)

Podczas transmisji TCP zawsze jest strona która połączenie nawiązuje i strona na połączenie oczekująca, więc jeden z klientów musi być tak zwanym "Serwerem". Rozwiązaniem może być Protokół bezpołączeniowy UDP.

Jeżeli miałby to być komunikator, to lepiej wiedzieć, że ta druga osoba nadal tam jest. UDP może być większym problemem niż TCP.

@autor
Dlaczego jest to problematyczne? Każda kopia programu nasłuchuje na porcie powiedzmy 1234. Natomiast nawiązanie połączenia byłoby przez port 4321. Aplikacja może wówczas jednocześnie odbierać połączenia jak i nawiązywać.

Gdybyś chciał jednak zrobić serwer pośredniczący w połączeniach to PHP wcale nie jest wymagane. Bo i do czego? Może to być równie dobrze aplikacja konsolowa w C# :P

0

@grangu: jak chcesz wysłać przez UDP dane do komputera nienasłuchującego na nie, albo np. stojącego za routerem?

0
ŁF napisał(a)

@grangu: jak chcesz wysłać przez UDP dane do komputera nienasłuchującego na nie, albo np. stojącego za routerem?

Do nienasłuchującego się nie da a co do routera to jeśli obsługuje NAT to nie ma problemu, jednak nie widzę innej możliwości transmisji danych bezpośrednio między dwoma komputerami bez nadawania żadnemu z nich rangi serwera, co nie znaczy że takiej możliwości nie ma. Oczywiście zgadzam się z tym że UDP to większości przypadków więcej problemów niż korzyści szczególnie jeżeli będzie chciał uruchomić więcej niż 1 taki komunikator na jednym komputerze.

0

@Sarrus, no ale z tym serwerem to i tak trzeba przekierowywać porty. Poza tym Windowsowi nie podoba się uruchamianie takich serwerów, tzn domyślnie blokuje bo myśli że to trojany.
Ale jak mówie problemem jest to przekierowywanie portów, jeśli jest router, albo potrzeba odblokowania w przypadku firewalla.

Aplikacja konsolowa w C# na serwerze wydaje się dobrym rozwiązaniem ale nigdy jeszcze czegoś takiego nie robiłem.
A mogłoby być tak że powiedzmy serwer będzie u mnie na jakimś komputerze, a problem zmiennego IP rozwiązałbym tak że przy każdej zmianie mojego IP będę sobie go publikował na stronie, z której komputer klienta bedzie pobierał IP i do mnie się łączył? Czy może lepiej zrobić powiedzmy konto pocztowe, które komputer klienta będzie sprawdzał, przeczesywał maile wyrażeniem regularnym (zrobię odpowiednią treść maila, żeby była unikatowa), i stamtąd brał IP?

0

nawet programy P2P (np. torrent) ma swój serwer (a tak naprawdę wiele serwerów), które służą do "znalezienie" się poszczególnych klientów. Po tym jak klienci się już połączą między sobą (musi być możliwość bezpośredniego połączenia między klientami) serwer nie jest już potrzebny

0
ubuntuser napisał(a)

Aplikacja konsolowa w C# na serwerze wydaje się dobrym rozwiązaniem ale nigdy jeszcze czegoś takiego nie robiłem.
A mogłoby być tak że powiedzmy serwer będzie u mnie na jakimś komputerze, a problem zmiennego IP rozwiązałbym tak że przy każdej zmianie mojego IP będę sobie go publikował na stronie, z której komputer klienta bedzie pobierał IP i do mnie się łączył? Czy może lepiej zrobić powiedzmy konto pocztowe, które komputer klienta będzie sprawdzał, przeczesywał maile wyrażeniem regularnym (zrobię odpowiednią treść maila, żeby była unikatowa), i stamtąd brał IP?

Pamiętam że kiedyś takie rozwiązanie ze stroną zawierająca ip serwera było stosowane w gadu-gadu, nie wiem jak jest teraz ale raczej polecał bym coś w stylu www.no-ip.com aby rozwiązać problem zmiennego ip.

0

Żadna metoda z wyszukaniem serwera nie jest w 100% Ragnarok-proof, bo każde nawet „stałe” IP może się zmienić (i się zmieni!), darmowy adres e-mail czy jakieś no-ip może zostać zamknięte (zdarzyło mi się), domena może wygasnąć itp.
Z tego wszystkiego najlepszym rozwiązaniem powinien być plik na WWW pod własną domeną. Stały adres IP - najgorszym.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.