Witam, mam pytanie czytam z lokel socketa w osobnym wątku gdy cokolwiek przyjdzie
if(socket.Connect())
{
Globals.isRun=true;
try{
while (Globals.isRun) {
socket.GetSocketData(readJson);
}
}
catch(Exception e)
{
Globals.isRun=false;
}
}
Funkcja GetSocketData:
public void GetSocketData(Executor save ){
if(socket==null)
Connect();
byte[] buffer = new byte[63335];
String str;
try {
InputStream inputStream = null;
inputStream = socket.getInputStream();
while(true) {
int count = inputStream.read(buffer);
if(count>0)
{
str= new String(Arrays.copyOfRange(buffer, 0, count));
System.out.println("w wątku: " + str);
save.doing( str );
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
W programie(który jest biblioteką dołączaną do programu klienta) rozmawiam z urządzeniem z którym gadam po sockecie (jakieś strukturki w json) i natknęłam się na problem, tzn. czasami przychodzi żądanie z urządzenia łapie je i przesyłam do klienta on mi odsyła i wysyłam odpowiedź do urządzenia (pętla czytania z local socket musi chodzić cały czas gdyż nie wiem kiedy urządzenie wyśle jakieś żądanie i to wg. mnie jest ok), ale jest też drugi przypadek, klient wysyła zapytanie do urządzenia (przez moją bibliotekę) czyli ja przesyłam dalej do urządzenia i ono mi coś odsyła i ja wiem co ma mi odesłać tylko teraz nie wiem jak to złapać gdyż cały czas czytam na osobnym wątku z localsocketa (mógł bym zmienić funkcję czytająca z socketa by zwracała true gdy złapie strukturę z urządzenia ale wtedy nie będzie ona mogła kręcić się cały czas a to jest konieczne). Czy macie jakieś pomysły ?