Problem z TCP/UDP

0

Mam taki problem,program A wysyła z zadaną częstotliwością kanałem UDP dane do programu B .Jest tez kanał TCP ktorym program B przesłal te czestotliwosc do programu A.Zakańczam program B ale A nadal wysyla dane.Jak najprosciej teraz zakonczyc działanie A??pzdr

0

Niech B przy zamykaniu się wysyła do A informacje, że już nie ma po co wysyłać.

0

OK,ale chodzi mi o to,że jesli program B nie konczy sie normalnie tylko go zamykam ręcznie(np.Ctrl+C) to jak wtedy przesłać ten fakt programowi A??Bo w bloku finally programu B nie wykonuje mi sie wtedy nic jezeli wczesniej zakonczylem program B.Jak program A moze poznać ze w po 2 stronie cos sie zmienilo(wszystkie metody typu isBound(),isConnected(),isClosed() zwracaja te same wyniki po stronie A zarowno przed jak i po zakonczeniu B).

0

Rozumiem z tego ze finally sie wykona jak w try damy return,ale jak damy System.exit() lub zamkniemy program juz nie??

0

0.Nie znam sie na javie.
1.No to niech B wysyła co np. pół minuty informajce, że jescze działa. Jeżeli A nie dostanie co pół minuty info, że jest sens wysyłać dane to kończy przesył.

0

Ale to nie jest efektywne wysylac co chwile Acknowledgement.W jaki sposob mozna zamknac Socketa gdy zabilismy aplikacje??

0

a nie jest tak, że próba pobrania z Socketu tzn. po TCP przez program A wywali wyjątek gdy B umrze, zamknie połączenie whatever?

0

jest tak,ale program A nie odbiera potwierdzen po TCP,po TCP odebrał tylko na samym poczatku czestotliwosc wysylan,adres i nr portu na który teraz wysyła dane po UDP.

0

Przeciez jak B przestanie dziala i A bedzie dalej wysylalo pakiety to otrzymany zostanie komunikat ICMP o nieosigalnosci portu. Wystarczy go pobrac. Niestety nie znam sie za dobrze na sieciowce w javie wiec nie pomoge tutaj. Moge tylko przykladowy kod w c dac.

0

A jeszcze jedno - bledy asynchroniczne (te o ktorym wczesniej wspomnialem) nie sa przekazywane do gniazda upd, chyba ze sa polaczone. W twoim wypadku chyba najprosciej bedzie wywolac funkcje connect dla tych gniazd upd.

0

ok,spróbuje z connect(),a tak btw to zapodaj jak mozesz ten kod w C,dzieki,pzdr:)

0

Kodu jest troche za duzo aby wkleic na forum. Ale zainteresuj sie przykladami z ksiazki "UNIX. Programowanie uslug sieciowych". Dokladnie przyklady z folderu icmpd.

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