Kirjoittaja Aihe: nc ja udp ?  (Luettu 2149 kertaa)

Mistofelees

  • Käyttäjä
  • Viestejä: 659
    • Profiili
nc ja udp ?
« : 04.04.20 - klo:11.13 »
Käyttäisin udp:tä esp8266-01 ja RasPin väliseen tiedonkeruuseen, koska se on varsin kevyt protokolla myös toteutettavaksi.
Vastaan tuli outo vika:
Jos lähetän esp:ltä jotain, nc jää edelleen odottamaan, eikä päätä yhteyttä.
Kokeilin tätä ristiin rastiin raspin, kotiserverien, läppärin ja  esp:n välillä ja aina sama juttu: yhteys jää roikkumaan.
Pitäisikö viestin loppuun ujuttaa joku loppumerkki. Mikä ja miten ?

Linuxilla lähetys komentoriviltä:
    echo "dataa" > /dev/udp/192.168.0.2/9999

esp:llä lähetys (arduino):
     Udp.beginPacket("192.168.0.2", localUdpPort);
    Udp.println(AllData);
    Udp.endPacket();

Linuxilla vastaanotto:
    nc -klu 9999

man:n mukaan nc:n parametri -k jättää komennon odottamaan seuraavaa pakettia. Jos sen jättää pois, ei tilanne muutu, vaan nc tulostaa omille riveilleen kaiken, mitä toiselta koneelta lähetetään, eikä systeemi koskaan palaa komentokehotteeseen:
    nc -lu 9999
Tämä pistää epäilemään, että nc ei saa kaipaamaansa loppumerkkiä.

Ajatuksia, ehdotuksia ?

nm

  • Käyttäjä
  • Viestejä: 16426
    • Profiili
Vs: nc ja udp ?
« Vastaus #1 : 04.04.20 - klo:11.45 »
nc:n (netcat-openbsd) parametri -W asettaa rajan, montako pakettia otetaan vastaan ennen prosessin sulkemista. Muuta yleistä mekanismia UDP-yhteyden sulkemiseen ei oikeastaan ole olemassa. Jos haluaisit sen tapahtuvan lähetyspään ohjaamana, signaali pitäisi lähettää paketin datana ja tulkita vastaanottopäässä. nc:ssä ei ole siihen mitään valmista mekanismia.

Mistofelees

  • Käyttäjä
  • Viestejä: 659
    • Profiili
Vs: nc ja udp ?
« Vastaus #2 : 04.04.20 - klo:11.52 »
-"  parametri -W asettaa rajan"
Kiitos. Tuota pitää kokeilla, kun pääsen työpöydän viereen.
Ongelma on ilmeisesti palvelin-päässä, koska lähettävien käskyjen rakenne minusta noudattaa määräyksiä ja ohjeita.

Tämä tuli vastaan, kun resetoin eps:tä. Sen liikkeellelähtö-viive on enintään sekunti, ja lähetysvalo alkoi vilkkua normaalisti. Vastaanottopäässä meni kymmeniä sekunteja ennen kuin virta alkoi näkyä.
Tätä pystyi nopeuttamaan käynnistämällä komennon uudestaan tai iskemällä muutaman kirjainmerkin ja returnin NC:n tulosteeseen.

Mistofelees

  • Käyttäjä
  • Viestejä: 659
    • Profiili
Vs: nc ja udp ?
« Vastaus #3 : 04.04.20 - klo:21.01 »
Kiitos NM !
Man -sivut voisivat olla toisinkin laaditut tämän -w -parametrin osalta.
Jouduin tekemään muutamia kokeiluita, ennenkuin asia selvisi.
Tämä -w näytti ratkaisevan ongelman, niin hassu kuin se onkin.

Tavallaan olisi odottanut, että yhteys kaatuu jo tuon -lu -parametrimäärittelyn mukaisesti
« Viimeksi muokattu: 05.04.20 - klo:00.58 kirjoittanut Mistofelees »