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
Niech B przy zamykaniu się wysyła do A informacje, że już nie ma po co wysyłać.
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).
Rozumiem z tego ze finally sie wykona jak w try damy return,ale jak damy System.exit() lub zamkniemy program juz nie??
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ł.
Ale to nie jest efektywne wysylac co chwile Acknowledgement.W jaki sposob mozna zamknac Socketa gdy zabilismy aplikacje??
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?
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.
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.
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.
ok,spróbuje z connect(),a tak btw to zapodaj jak mozesz ten kod w C,dzieki,pzdr:)
Kodu jest troche za duzo aby wkleic na forum. Ale zainteresuj sie przykladami z ksiazki "UNIX. Programowanie uslug sieciowych". Dokladnie przyklady z folderu icmpd.