Udp socket în Android

  • Sistemul de operare Android
  • prize

Nu am găsit răspunsuri sensibile la această întrebare.

În prezent, prizele sunt folosite pentru a interacționa cu hardware-ul. Creez un socket (DatagramSocket) pe un port de care am nevoie (puteți alege aleatoriu), toate operațiunile ulterioare ar trebui să fie efectuate de pe acest port. Timpul de expirare este setat la 1 secundă. În toate celelalte părți (alte filete), trec acest exemplu particular al soclului.







Interacționez cu ei în următoarele moduri:

  1. 1. Interrogarea periodică (la fiecare 4 secunde) - acest lucru este necesar de către dispozitiv, altfel va ieși din modul "captură". Folosesc mecanismul built-in Android-Timer;
  2. 2. Când trebuie să obțin niște date de pe dispozitiv sau să le trimit la el, creez un Thread, îl folosesc pentru a trimite o solicitare și pentru a primi un răspuns. După terminarea lucrării, firul se oprește (nu se înclină);
  3. 3. Fluxul care trebuie să se rotească în mod constant și să primească numai pachetele de date necesare, restul să ignore. L-am rula și trebuie doar să se rotească (În ea, atunci întreaga problemă, înainte de a face acest lucru fără ea).






Problema este următoarea: când introduceți pasul 3, aplicația nu mai funcționează, ca în cazul în care soclul este întotdeauna ocupat. Cod exemplu (clasă din articolul 3 de mai sus):

UPD:
Înțelegând această problemă, am ajuns la concluzia că am nevoie de prize fără blocare.

Am incercat diverse exemple - nu am putut incepe nimic de la ei. Nu am nimic sau 0.

În conformitate cu ceea ce vreau să fac din întrebarea anterioară, am două opțiuni:

Pentru a nu fi neîntemeiat, am creat un depozit pe githaba, unde mi-am expus toate încercările.

Sarcina este următoarea: trebuie să faceți una dintre căile de a interacționa cu dispozitivul prin rețea:
1. Mențineți un fir în program și organizați coada de așteptare. Învârtiți continuu bucla din flux, verificând dacă există ceva de trimis și trimis. După colete, va exista un bloc în care citim dacă a venit ceva.
2. Puteți face un fir care va roti în mod constant bucla și asculta în ea pentru a vedea dacă ceva a venit, și în fire separate trimite cereri.

Socketurile de blocare nu au reușit să scrie un singur exemplar de lucru într-un singur fir, numai separat. Ca rezultat, sa dovedit a fi un concurent pentru socket.
Pe nonblocks, nu a fost posibil să se obțină nici măcar o interogare primitivă / răspuns (am aflat ce e în neregulă)







Articole similare

Trimiteți-le prietenilor: