Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Mistofelees - 17.08.25 - klo:13.28

Otsikko: TCP-paketteja kännykälle ?
Kirjoitti: Mistofelees - 17.08.25 - klo:13.28
Onko jotain tapaa, jolla Linux lähettäisi TCP-paketteja 4G mokkulaa käyttävälle clientille ?

Serveri on Linux-kone kotona. Serverillä ja reitittimellä on portti auki ja yhteys toimii serverille päin.
Serverillä pyörivä ohjelma pitää huolen liikenteen turvallisuudesta.
Client on ESP32-mikroprosessorikortti

Client lähettelee datapaketeita epäsäännöllisin välein huonon kuuluvuuden yli. Olisi hyvä saada serveriltä kuittaus onnistuneesta kopituksesta.
En haluaisi avata http-porttia.
Otsikko: Vs: TCP-paketteja kännykälle ?
Kirjoitti: kamara - 17.08.25 - klo:15.40
Riittääkö netcat ?

https://unix.stackexchange.com/questions/336876/simple-shell-script-to-send-socket-message
Otsikko: Vs: TCP-paketteja kännykälle ?
Kirjoitti: Mistofelees - 17.08.25 - klo:16.39
Käytän nc (netcat) serverillä pakettien vastaanottoon, mutta en ole keksinyt tapaa, jolla saisi palautettua clientille.
Pitäisi tietää osoite ja portti, jonne lähettää. GSM ja 4G osoite on dynaaminen.
Otsikko: Vs: TCP-paketteja kännykälle ?
Kirjoitti: kamara - 17.08.25 - klo:16.46
Ehkä en ymmärrä oikein ongelmaasi, mutta eikö client voi lähettää muiden tietojen mukana omaa ip:tään, jolloin voit lähettää netcatillä ok-ilmoituksen ?

Vai haluatko vastauksen lähettää broadcastina kaikille clienteille ?
Otsikko: Vs: TCP-paketteja kännykälle ?
Kirjoitti: Tomin - 17.08.25 - klo:18.43
Käytän nc (netcat) serverillä pakettien vastaanottoon, mutta en ole keksinyt tapaa, jolla saisi palautettua clientille.

Ei taida ihan pelkällä netcatillä onnistua mielekkäästi, mutta kaipa senkin saisi suorittamaan jonkin ohjelman, joka kirjoittaa vastauksen. Esimerkki löytyy ainakin shelliskriptin ajamisesta netcatillä. (https://serverfault.com/a/1081812) Vastaus lähetään samassa TCP-yhteydessä eli et tarvitse tietää asiakkaan IP:ä tai porttia.

Mielestäni parempi ratkaisu olisi kirjoittaa lyhyt ohjelma valitsemallasi kielellä, jolloin voit varsin helposti käsitellä datan ja sen jälkeen lähettää vastauspaketin samaa TCP-yhteyttä pitkin, ja tarvittaessa näitä edestakaisia viestejä voi olla useampikin. Tässä Python esimerkki. (https://docs.python.org/3/library/socketserver.html#socketserver-tcpserver-example) Toki vastaukseksi halunnet muuta kuin lähettää saman datan takaisin.

Pitäisi tietää osoite ja portti, jonne lähettää. GSM ja 4G osoite on dynaaminen.

Onko liittymässä kuitenkin julkinen IP? Yleensähän noissa ei ole. Toisaalta yllä olevissa esimerkeissä et tarvitse asiakkaalle julkista IP:ä tai avointa porttia, koska voit lähettää vastauksen samaa yhteyttä pitkin. Näin yleensä toimitaan.