Loading...
murkata86 avatar murkata86 10 Точки

Java - PHP Socket Communication

Здравейте,

 

Не съм сигурен дали ѝ е тук мястото на тази тема.... Та ето го въпроса ми.

Имам Java приложение, което следи дали има промени в дадена папка - дали е дабавен нов файл или нова папка, дали нещо е изтрито или променено, след това отваря сокет и праща съобщение към PHP и така показвам съобщението в браузъра. Изглежда обаче, че има някакъв проблем - приложението следи за проемни в дадена папка. Създавам нов файл в тази папка - на конзола се отпчатва съобщение и в същото време съобщението се пише в стрийма и когато рефрешна страницата, виждам съобщението. Създавам нов файл - рефрешвам и виждам съобщението. Проблема обаче идва, когато не рефрешна страницата и в същото време създам няколко файла. Тогава дори съобщението не се отпчетва на Java конзолата. Изглежда, че за да видя съобщението на конзолата  все път трябва да рефрешвам браузъра. За момента това ми е проблема.

Чудя се дали не трябва да ползвам и AJAX...  След като осъщества комуникацията между двете приложение, ще трябва да прихващам съобщеният а, да ги сложа в база данни, но това по - късно. За момента, комуникацията ми е проблема.

А ето го и кода ми:

Main

http://pastebin.com/yEJBbxc5

Reader:

http://pastebin.com/jKrYT8Pz

Server:

http://pastebin.com/sMtj2NZy

PHP

http://pastebin.com/rMAA1hgg

Пуснах този въпрос и Stackoverflow, но ако може някой от тук също да погледне и да помогне ще е супер!

Поздрави,

Иван

Тагове:
0
Java Advanced 16/03/2016 21:53:43
msmilkoff avatar msmilkoff 338 Точки

12. Във всеки пост е позволено цитирането на не повече от 15 реда код. Ако искате да споделите по-дълъг код, използвайте сайтове като Pastebin и Github Gist).

0
murkata86 avatar murkata86 10 Точки

Малко го бях позабравил това.... Сега ще го оправя.

1
murkata86 avatar murkata86 10 Точки

Е след още блъскане, разбрах какво точно се случва Да кажем, че комункацията между двете приложения работи, но все пак ще трябва да използвам AJAX,  за да сторвам данните. Идеи?

0
RoYaL avatar RoYaL Trainer 6849 Точки

Чакай, тая работа със сокетите в РНР не работи точно така.

Да речем, че имаш джавешко приложение, което слуша за събитие в някаква папка (не съм ти чел кода), което не съм сигурен дали не трябва да стане с един безкраен цикъл, че иначе приложението ще приключи изпълнение. Ок, регистрира ивент, прави връзка с друг сървър, в твоя случай отново с този компютър, на порт X, където слуша РНР приложение. РНР приложението му биват пушнати данни и то ги принтира.

Супер, до тук добре.

Това РНР приложение обаче също трябва да е дългоживееш процес, иначе тая работа няма да я бъде. Демек да бъде конзолно приложение. Ако е уеб приложение, ще получаваш данни само когато си отворил процеса, т.е. когато си достъпил приложението в браузъра. През останалото време, джавешкото приложение няма да има на кой да прати данните.

Сега идва въпросът - ти какви данни искаш да сторваш? Това със сокетите си е чист поток. Аз виждам, че има промяна в папка и ти се провиквам, че има такава, ако ти в този момент си говориш с друг човек и не ме чуеш, тая работа заминава и няма и да разбереш. Ти какво се опитваш да постигнеш? Отваряш РНР приложението и получаваш на куп информацията, която до момента е трябвало да ти бъде пратена + слушаш за още информация?

1
murkata86 avatar murkata86 10 Точки

Отваряш РНР приложението и получаваш на куп информацията, която до момента е трябвало да ти бъде пратена + слушаш за още информация?

Да, точно това ми е идеята.

0
RoYaL avatar RoYaL Trainer 6849 Точки

Ами ако не можеш да се конектнеш от джава към РНР-то, т.е. не е отворени приложението, пиши в база. Пък в РНР-то прави една проверка дали не трябва да погледнеш в базата и ако да, се свържи към същата база и дръпни информацията, в която е писало джава приложението докато те е нямало.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.