web ohjelmointia

Anonyymi-ap

Tein web ohjelmointia fpc:llä ja fpSocketeilla(Socket unit) mm. udp server/client tuli testattua ensin tuolla ja sitten törmäsin Synapse:en, jolla pystyi tekemään saman(synsock unit), mutta myös useita protokollia oli suoraan tuettuna kuten http/https, ftp.
Synapse:ssa on aika elegantti wrapperi toteutettu c-sockettikirjaston ympärille, jos kiinnostaa miten c:llä toteutettuja kirjastoja voi käyttää fpc/lazarus ympäristössä, niin kannattaa tutustua miten wrapperi on toteutettu tuossa.
Molemmat kirjastot toimii, mutta vaatii aika tarkkaa tietoa sockettien toiminnasta ja mm. recvfrom-funktio oli todellinen kiusankappale saada toimimaan - ennen kuin speksistä tuli luettua, että sen palauttama client:n osoite on pointterin päässä ja kyseisen kentän pituuden maksimi on asetettava jotenkin järkevästi:
uses Sockets;
var
pClientAddr: ^SockAddr;
pClientLen: ^uint32;
begin
...
new(pClientAddr);
new(pClientLen);
...
datan vastaanotto serverille:
pClientLen^ := 30;
buf_size := fpRecvFrom(Soc,@buf[0],cMaxBufSize,0, psockaddr(pClientAddr),pClientLen);
ja datan palautus client:lle vastaavasti:
fpSendTo(Soc,@buf[0],buf_size,0,pClientAddr,pClientLen);

Jotenkin tuntuu, että aihe on hieman vaikea jos ei tunne socket:eja jo ennalta ja voi kannattaa mennä helpomman kautta ja käyttää vähintään Synapse:n tarjoamaa blocksock-unittia. Esim. http-tiedoston vastaanotto oli todella helppo toteuttaa.
Niin se kysymys, eli onkohan noita kirjastoja netin käpistelyyn vielä muitakin yleisessä käytössä vai näilläkö pitää pärjätä?

22

223

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Socket-ohjelmointiin löytyy aloittelijan ohje - tosin c-kielellä - mutta sitä on kohtuullisen helppoa soveltaa koska fpc:ssä taustalla oleva API on kuitenkin sama:
      https://beej.us/guide/bgnet/
      Protokollakohtaisia kirjastoja on paljonkin tarjolla, mutta socketeille taitaa olla vain nämä kaksi.

      • Anonyymi

        Miksi vanhat papat leikkii windows10llä
        Mistä siinä on kysymys, kun papparainen Ieikkii päivästä toiseen windows 10:llä? Valehdelllen että se toimisi.


      • Anonyymi

        Persereikäpeter se menee edelleen viimevuosituhannen opein perse edellä puuhun!


    • Anonyymi

      VAROITUS:

      recvfrom() -on ERITTÄIN ongelmallinen funktio !

      Eikä syy ole Synapsessa / Delphissä / FreePascalissa, vaan Windowsissa !
      (Ei ole tiedossani, onko Linuxissa sama ongelma vai eikö ole, sen joudut selvittämään itse).

      En enää muista kaikkia yksityiskohtia, mutta JOKO tuo RecvFrom hukkaa paketteja (nyt EI OLE kyse paketin hukkumisesta internetissä, mikä sekin on toki mahdollista) tai sitten paketin lähettäjätieto vääristyy !

      Eli, jos samalla socketilla teet useita RecFrom() -kutsuja, niin edellinen RecFrom() -kutsu voi vaikuttaa seuraavaan vääristämällä tiedon siitä, mistä IP -osoitteesta ko. paketti tuli !

      Ilmeisesti Microsoftin mielestä vain TCP:llä on merkitystä ja UDP:n osalta "toimii jos toimii, eikä sillä ole väliä".

      En muista, löytyikö tuohon mitään todellista ratkaisua.

      Synapsesta:

      Toimii http -protokollan osalta erinomaisen hyvin.

      Valitettavasti https -protokollan osalta ei voi sanoa samaa.
      Joihinkin palvelimiin toimii hyvin, toisiin ei ollenkaan.

      Nuo SSL / TLS -toteutukset ilmeisesti ovat varsinaista versiosotkua, eli yksi toteutus ei välttämättä oikein toimi yhteen toisen kanssa.

      OpenSSL on varmaankin käytetyin, mutta sen rakenne on lähinnä sekopäinen.
      Sitten on Peter Gutmannin tekemä Cryptlib. Toimii oikein hyvin, mutta muissa kuin GPL -lisensioiduissa ohjelmissa sen käyttö on maksullista.

      OpenSSL:ssä myös tietoturvahistoria on kehno. Muistaako kukaan enää vuoden 2014 isoa juttua: HeartBleed.

      Tuo yksittäinen vika on ehkä korjattu, mutta kuinka monta muuta tietoturvareikää piilee OpenSSL:n sisuksissa ?

      C-kielellä tehdystä koodista yleisin kääntöjärjestelmä on autoconf/automake, mutta kun edes se ei kelvannut OpenSSL:n tekijöille.

      MIKSI pitää OpenSSL:n kääntämisestä tehdä niin tuhottoman vaikeaa ?

      • Anonyymi

        Windows todella surkea?
        Luin jostain uutisesta että Windows on todella paska tai huono järjestelmä....


      • Anonyymi
        Anonyymi kirjoitti:

        Windows todella surkea?
        Luin jostain uutisesta että Windows on todella paska tai huono järjestelmä....

        Windows on ihan hyvä omiin juttuihinsa, kuten normi desktop-sovelluksiin. Kehitän omia sovelluskirjastoja jotka toimii sekä Linuxissa että Windowsissa. Linuxille on helpompi kehittää ja siellä koodi toimii nopeammin, linux on kuin sovelluskehittäjän työkalupakki, mutta jos taas on aikeissa julkaista vaikka joku pieni maksullinen desktop-sovellus hyötyojelmana, Microsoftin ekosysteemi toimii paremmin ja tarjoaa siihen oman storen ym. Linuxissa taas oletuksena (tai käyttäjät olettaa) että kaikki on ilmaiseksi asennettavissa reposta.

        Itse asensin Windowsin uusiksi, koska WSL2 voi ajaa/kehittää Linuxille ja muutosten tuonti käy näppärästi Windowsin puolelle gitin kautta ja päin vastoin.


      • Anonyymi

        "MIKSI pitää OpenSSL:n kääntämisestä tehdä niin tuhottoman vaikeaa ?"

        Ihan helpostihan se kääntyy.

        "Eikä syy ole Synapsessa / Delphissä / FreePascalissa, vaan Windowsissa !"

        Niin vikahan on siinä kun yrität Windowsissa tehdä asioita missä se on huono.


      • Anonyymi
        Anonyymi kirjoitti:

        Windows on ihan hyvä omiin juttuihinsa, kuten normi desktop-sovelluksiin. Kehitän omia sovelluskirjastoja jotka toimii sekä Linuxissa että Windowsissa. Linuxille on helpompi kehittää ja siellä koodi toimii nopeammin, linux on kuin sovelluskehittäjän työkalupakki, mutta jos taas on aikeissa julkaista vaikka joku pieni maksullinen desktop-sovellus hyötyojelmana, Microsoftin ekosysteemi toimii paremmin ja tarjoaa siihen oman storen ym. Linuxissa taas oletuksena (tai käyttäjät olettaa) että kaikki on ilmaiseksi asennettavissa reposta.

        Itse asensin Windowsin uusiksi, koska WSL2 voi ajaa/kehittää Linuxille ja muutosten tuonti käy näppärästi Windowsin puolelle gitin kautta ja päin vastoin.

        "mutta jos taas on aikeissa julkaista vaikka joku pieni maksullinen desktop-sovellus hyötyojelmana, Microsoftin ekosysteemi toimii paremmin ja tarjoaa siihen oman storen ym. "

        Kaikki storet ottavat niin ison provision, että näiden maksuvirityksillä ei tee mitään. Sovellus voi ihan hyvin olla ladattavissa mistä tahansa jos jotain ladataan mutta maksujärjestelyt kannattaa pitää irti storesta.

        Mutta jos haluaa julkaista työkalusovelluksen niin että maksaa hurjat provisiot niin tekee softan niin, että on siirrettävissä AppStore, Google Play, Ubuntu store ja Windows store välillä. Näissä kun oli mielestäni tuki maksujärjestelmille. Samsungillakin vissiin vielä joku.

        Tällaisten sovellusten tekoon löytyy työkaluiksi esimerkiksi Electron ja Tauri.

        Sovelluskehittäjän kannalta näistä ei toimi mikään yhtään paremmin kuin muut.


    • Anonyymi

      Hyvä tietää tuosta windows-puolesta. Nyt olen testannut sekä tcp:llä että udp:llä noita socketteja ja synapsen avulla saanut lokaali-koneelta jopa apache web-serveriin https-yhteyden onnistumaan. En kääntänyt mitään vaan asensin vaaditut kirjastot pakettivarastosta wiki/nettiesimerkin mukaisesti.
      Sanoisin, että udp:n rajapinta on "hiukan" outo joissakin tilanteissa ja esim. sattumalta huomasin, että vaikka udp on yhteydetön, siinä voi olla järkeä kutsua connect:ia client-koodissa, jolloin saa sockettiin täytettyä lisää tietoa.. vai teenkö jotain väärin? Server-koodissa tuo ei toiminut..
      Joka tapauksessa kokeilin timerin avulla lähettää 1000 pakettia/s ja ainakaan tuolla nopeudella paketteja ei kadonnut vielä. Paketeilla oli joka kerta eri porttinumerot ja niihin pystyi vastaamaan. Wifi:n yli toki muutamia hukkui matkalla.

      • Anonyymi

        Windowsit tuhoaa suomen kilpailukyvyn koska kukaan ei halua sitä käyttää ja jos töissä pakotetaan - se on sitten suoraan poissa työmotivaatiosta eikä valmista tule.


      • Anonyymi

        Älä paskaa puhu!


      • Anonyymi
        Anonyymi kirjoitti:

        Windowsit tuhoaa suomen kilpailukyvyn koska kukaan ei halua sitä käyttää ja jos töissä pakotetaan - se on sitten suoraan poissa työmotivaatiosta eikä valmista tule.

        "Windowsit tuhoaa suomen kilpailukyvyn koska kukaan ei halua sitä käyttää ja jos töissä pakotetaan - se on sitten suoraan poissa työmotivaatiosta eikä valmista tule."

        Naurettava väite!

        Enemmän kuin mielelläni koodaisin Delphillä Windows -sovelluksia.

        Mutta tämähän ei suomalaisille tympeille IT -johtajille sovi, heidän mielestään pitäisi kai koodata C:llä, C++:lla tai Javalla.

        Näin siitä huolimatta, että lopputuloksen laatu Delphillä on erinomainen, ja laatu on ylivoimainen verrattuna kieliin C, C++ ja Java.

        Eli jos jossain firmassa halutaan Windowsille koodausta, niin Delphillä olisi kiva päästä sellaisia tekemään.

        Ja jos on tarpeen, Delphin uusimmilla versioilla syntyy appeja myös Androidille ja iOS:lle.

        Maksullisissa versioissa jopa Linux on tuettu ohjelmien ajoympäristönä . mutta itse Delphi IDE toimii vain Windowsissa.


      • Anonyymi
        Anonyymi kirjoitti:

        "Windowsit tuhoaa suomen kilpailukyvyn koska kukaan ei halua sitä käyttää ja jos töissä pakotetaan - se on sitten suoraan poissa työmotivaatiosta eikä valmista tule."

        Naurettava väite!

        Enemmän kuin mielelläni koodaisin Delphillä Windows -sovelluksia.

        Mutta tämähän ei suomalaisille tympeille IT -johtajille sovi, heidän mielestään pitäisi kai koodata C:llä, C :lla tai Javalla.

        Näin siitä huolimatta, että lopputuloksen laatu Delphillä on erinomainen, ja laatu on ylivoimainen verrattuna kieliin C, C ja Java.

        Eli jos jossain firmassa halutaan Windowsille koodausta, niin Delphillä olisi kiva päästä sellaisia tekemään.

        Ja jos on tarpeen, Delphin uusimmilla versioilla syntyy appeja myös Androidille ja iOS:lle.

        Maksullisissa versioissa jopa Linux on tuettu ohjelmien ajoympäristönä . mutta itse Delphi IDE toimii vain Windowsissa.

        "Näin siitä huolimatta, että lopputuloksen laatu Delphillä on erinomainen, ja laatu on ylivoimainen verrattuna kieliin C, C++ ja Java."

        Ei ole.

        Vieläkään ei ole näkynyt Delphillä tehtyjä ohjelmia jotka toimisivat ilman asentamista.

        "Maksullisissa versioissa jopa Linux on tuettu ohjelmien ajoympäristönä . mutta itse Delphi IDE toimii vain Windowsissa."

        Eli kehittäminen on hankalaa kun ei toimi natiivisti siellä missä koodikin on. Muista että Linux on defacto konesaleissa.


    • Anonyymi

      Mitähän ongelmaa tässä yritetään ratkaista?

    • Anonyymi

      AI -juttuja kun alat laskemaan, niin selvästi hidastuu kyllä joo laskenta teho jos lasketaan jhotain asioita ja analysoidaan niitä 69 potebnsaiin 53 vaikka..

    • Anonyymi

      Kaiken näköisiä viheltäjiä sitä onkin olemassa, huh hu

    • Anonyymi

      Linux:issa tuo synapse socket-toteutus nojaa vahvasti libc-kirjastoon ja on siitä wrapper-versio joten toimintakin lienee identtistä. Ratkaistava ongelma oli nimenomaan saada socketit toimimaan fpc:ssä ja synapsen avulla ratkaisu on yhtä "virhe" herkkä kuin c-toteutuskin(joka on ennestään tuttu) joten sen kanssa osaa elää.
      Tuo udp-pakettien lähetys kannattaa tosiaan toteuttaa clientissa synkronisesti ettei tule yhtäaikaisten pakettien törmäyksiä eli socketin info-kentät mene sekaisin vaikka eri säikeissä. Vaihtoehtoisesti teen niin, että vastaanotettu socketti, jos serveri-portti oli alunperin vaikka 10000, se vaihtuu joksikin muuksi ja serveriportin voi avata uudelle soketille odottelemaan yhteyksiä. client-pään portti pysyy samana ja vaihtuu vasta jos serveri lähettää. Näin ollen pitää olla vapaita portteja tarjolla socketeille ja yhteydet ei tällöin törmäile keskenään. Itse asiassa, noita soketteja taisi pystyä luomaan useita odottavaan tilaan samalla porttinumerolla jotenkin - en vaan ole varma onnistuuko udp:n kanssa.

      • Anonyymi

        Ottasit nyt helvetti ne lääkkeesi jotta loppuisi tuo loputun sekoilusi.


    • Anonyymi

      On satoja helpompia tapoja siirtää sivu ftp servuun, kuin mitä sähläät on turvallisiisriski!

      • Anonyymi

        Saimaanapinahan vaan sotkee asiat!


    • Anonyymi

      Minä ajattelin että tekisin tuollaisen että joka lähettää sääkuvia tai valvontakuvia itselle sähköpostina sitten, 1 ongelma vain kun uusissa tietokoneissa ei saa olla BIOSissa ominaisuutta että voi määrätä ohjelmallisesti itse jotain aikoja milloin kun tietokone on sammutettu aivan virtakytkimestä.

      On sellainen eräs joku vanha I5-prosessorinen kone missä on vielä tuo optio, siis c- ja assembly -koodinen ohjelma voi määrätä milloin tietokone määrittää itse ajat milloin käynnistyy ja sulkeutuu, siis ei sleep-modeissa vaan aivan kun on virta pois siis RTC, Real Time Clock -ohjelmointia :D

      • Anonyymi

        " kun uusissa tietokoneissa ei saa olla BIOSissa ominaisuutta että voi määrätä ohjelmallisesti itse jotain aikoja milloin kun tietokone on sammutettu aivan virtakytkimestä"

        Mikäs juttu tuo nyt oli olevinaan ????

        Jos virta sammutetaan ohjelmallisesti, niin jos tätä ennen on asetettu "RTC ON @ 2023-12-31T22:50:00", niin sitten kone todellakin käynnistyy automaattisesti asetettuna aikana.

        Jos taas katkaiset virran virthalähteen mekaanisella "0/1" -kytkimellä, niin ei tietenkään käynnisty automaattisesti koskaan (koska tuo mekaaninen kytkin vastaa sitä, että irrottaisit PC:N pistokkeen pistorasiasta).

        Yritätkö nyt väittää, että jokin määräys (MIKÄ ?) kieltäisi tietokoneen valmistajaa laittamasta koneeseen vanhaa tuttua "RTC ON" -ominaisuutta ?

        Entäpä muut "AUTO ON" -toiminnallisuudet ?

        Teoriassa olisi "Wake-On-Lan" , mutta olen kokeillut, eikä toiminut (vaatiiko tuo jonkin ylimääräisen kaapelin verkkokortin ja emolevyn välille, tai ns. jumpperin, jos verkkokortti on emolevylle integroitua mallia, kuten moderneissa koneissa hyvin usein on ?

        Sitten on Wake-On-Ring: Jos tuo on tehty oikeasti toimivaksi, niin silloin sarjaportin (COM1) RI (=RingIndicator) tuotu esim. +9V jännite (verrattuna saman portin GND -nastaan) pitäisi aiheuttaa PC:n käynnistyminen, jos tuo Wake-On-Ring -toiminto on ensin BIOS -asetuksista kytketty päälle.

        Periaatteessa muuten: Jos käytät 5V jännitteellä erillistä mikrokontrolleria, niin mikrokontrollerin I/O -nastasta vain johto tuohon sarjaportin RI -nastaan: Kun mikrokontrolleri asettaa ko. I/O -nastan tilaan "Looginen 1", niin PC:n pitäisi käynnistyä. Sensijaan 3,3V käyttöjännitteellä on riski, että I/O-nastan jännite jää liian alas, eikä luotettavasti käynnistä PC:tä. Pienellä transistorikytkennällä toki tämänkin voi korjata.


    Ketjusta on poistettu 1 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. En ole rakastunut

      Tai ihastunut sinuun. Kiinnostuin kyllä heti koska erotut massasta.
      Ikävä
      376
      3451
    2. Miksi suomalaisia vainajia säilytetään kylmäkonteissa ulkona? Näin kuolleita kohdellaan Suomessa

      Suomesta ei löydy enää tilaa kuolleille. Tänä päivänä vainajia säilytetään ympäri maata ulkona kylmäkonteissa. Kontit
      Maailman menoa
      179
      1508
    3. Olen ärtynyt koska

      minulla on tunteita sinua kohtaan. Tunteita joita en voi ilmaista. Kaipaan kaikkea sinussa. Siksi olen välillä hankala.
      Ikävä
      66
      1277
    4. Suomalaiset marjat loppuvat

      Suomalaiset marjat mätänevät metsään, koska ulkomaalaiset, lähinnä thaimaalaiset poimijat ovat huolehtineet suomalaisten
      Maailman menoa
      145
      1151
    5. Puhutko toisista ihmisistä

      pahaa, jotta näyttäytyisit itse jotenkin paremmassa valossa?
      Ikävä
      117
      853
    6. Joku tukeva täti syyttää suomalaisia rasisteiksi Hesarissa

      ”Kaikki valkoiset ihmiset Suomessa ovat kasvaneet rasistiseen ajatteluun”, sanoo Maija Laura Kauhanen: https://www.hs.
      Maailman menoa
      164
      815
    7. Mitä teen väärin?

      Alkaa pikku hiljaa tympäsemään ainainen pakkien saanti. Eka ennen kun nähdään, miehet ovat kiinnostuneita viestittelemää
      Sinkut
      116
      794
    8. Haluaisin tietää

      mikä saa sinut tuntemaan olosi rakastetuksi. Ja sitten haluaisin mahdollisuuden tehdä juuri niin. 💔
      Ikävä
      46
      782
    9. Oli mukava tavata irl

      Sattuma toi sinut matkani varrelle. Ihmettelin sitä silloin, ehkä vähän vieläkin. Oli ilo jutella ja tuntea, vaikka nyt
      Ikävä
      24
      779
    10. Yhteiskuntaa hyväksi käyttäjät

      Kyllä täällä Suomussalmellakin osaavat käyttää näitä Suomen etuja hyväksi. Vuokrataan ns. asunto lapselle että saa asu
      Suomussalmi
      47
      772
    Aihe