Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 24 lis 2024, o 12:20


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
PostNapisane: 25 lip 2019, o 05:58 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 123
Pomógł: 0

Witam mam taki problem. Napisałem aplikacje w Delphi która jest serwerem UDP z użyciem komponentu paleta indy udpserwer. Serwer ma na początek odebrać tekst i odpowiedzieć jakimś potwierdzeniem do klienta.

Klienta UDP oprogramowaniem na Androidzie z użyciem B4A.

Wszystko działa pięknie ale w sieci lokalnej.Problem pojawia się gdy klient wysyła coś z sieci Internet czyli z zewnątrz przez ruter.
Serwer odczytuje wysłane do niego dane ale nie odżyła potwierdzenia do klienta.
Jak dotąd ustaliłem że coś jest nie tak z adresami IP. Po stronie serwera możemy przez peerip odczytać IP nadawcy.W sieci lokalnej jest ok IP nadawcy jest poprawne.Gdy wysyłam coś z sieci przez ruter serwer jako odres nadawcy powinien wskazać IP mojego rutera ale tak się nie dzieje IP jest różne niż mojego rutera. Stąd też serwer nie wie gdzie ma odesłać potwierdzenie.

Nie wiem dlaczego w sieci WAN serwer pokazuje zły adres nadawcy i jak odesłać potwierdzenie klientowi.

_________________
http://mojekonstrukcje.pl/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lip 2019, o 07:04 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27310
Lokalizacja: Szczecin
Pomógł: 1041

TomekTomek55 napisał(a):
ale nie odżyła potwierdzenia do klienta.

chyba chodziło ci o to , że nie odsyła

TomekTomek55 napisał(a):
Nie wiem dlaczego w sieci WAN serwer pokazuje zły adres nadawcy i jak odesłać potwierdzenie klientowi.

Nic źle nie działa - tylko ty nie zdajesz sobie na razie sprawy z tego jak działa UDP

Po pierwsze mam nadzieję, że masz ustawiony odpowiednio router i masz odpowiednie przekierowania portów albo DMZ

Po drugie serwer UDP może nadawać pakiety w dwóch trybach:

1. w trybie KLIENTA - i zapewne to się u ciebie dzieje (a o tym nie wiesz) ... co oznacza, że serwer wysyła pakiet UDP i sam formuje od nowa swoją ramkę danych ze wskazaniem na adres IP i port klienta, a to spowoduje, że taki PAKIET nigdy nie dojdzie do tej twojej drugiej strony twojego prawdziwego klienta, który wysłał zapytanie do serwera i oczekuje odpowiedzi a jednocześnie twój klient jest za jakimś NAT'em/Firewalem. No bo serwer próbując wysłać "ala odpowiedź" w trybie klienta próbuje się przebić przez tego NAT'a i nie da rady, po to są Firewall'e

2. w trybie SERVER RESPONSE - czego pewnie nie umiesz na razie odpalić, ale też ja ci nie podpowiem jak to zrobić na Indy bo hmmm sam nie pamiętam - tak dawno już temu zajmowałem się INDY. Ale na czym to polega? Otóż gdy serwer dostaje zapytanie od twojego klienta zza NAT'a - to odpowiada tą samą ramką zawierającą m.in MAC adres twojego klienta i ten sam port źródłowy, przy czym klient też musi mieć odpowiedni timeout żeby umieć odebrać taką odpowiedź typu RESPONSE

TUTAJ: https://atnel.pl/mkudps.html masz taki komponent, który potrafi to zrobić a pobierając ten komponent masz też terminal UDP, którym możesz to przetestować ;) obejrzyj poradnik wideo który widać na tej stronie - no ale to nie ma z kolei nic wspólnego z INDY

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO