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ä?

2

55

    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
      UUSI

      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 ?

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

    Luetuimmat keskustelut

    1. Martina naimisiin.

      Etsimässä täydellistä hääpukua Roomassa.
      Kotimaiset julkkisjuorut
      325
      2840
    2. Etsin sinua vakavissani

      Täältä tai ihan mistä tahansa. Meillä jäi asioita selvittämättä, ja minun sydän on sanonut painavan sanansa, että meillä jäi juttu pahasti kesken. Syd
      Ikävä
      55
      1189
    3. En voi edes kirjoittaa siitä.

      Se olis liian lapsellista. Kun on yhteys tosielämän puolella ja selvät sävelet. Älykäs se on, todennäköisesti älykkäämpi kuin kukaan, ketä olen tavann
      Ikävä
      62
      1091
    4. En minä seksin perässä ollut

      vaikka niin luulit, vaan sinun, koska halusin sinut kokonaan. Vihjailit nimittäin siihen suuntaan. Miksi muuten epäilit minusta kaikkea pahaa, nainen?
      Ikävä
      62
      902
    5. Vanhempi mies

      Rakkain, kuinka me enää koskaan voitais sopia näkemisestä? Soittasin, soittasin -mutta, kun?
      Ikävä
      58
      846
    6. Olen pahoillani nainen

      Olen pahoillani siitä, että vielä säännöllisesti nähdessämme asiat välillämme ajautuivat suuntaan, joka ei ollut kummallekaan hyvästä. Harmittaa puole
      Ikävä
      70
      827
    7. En löydä sinua

      jotta voisin viestiä lähettää.
      Ikävä
      40
      700
    8. Hääpukuja ei turhaan ostella

      Olisiko todella niin, että Hanuri-Hannu on taas kehissä ja vanha suola janottaa todella pahasti - Martti on liikkeellä ja nyt lienee tosi kyseessä! O
      Kotimaiset julkkisjuorut
      56
      698
    9. Martina kiusoittelee kateellisia vihaajiaan

      Palstan Martina vihaajat menivät sekaisin kun Martina lähti Roomaan. Tätä on hauska seurata 🤭
      Kotimaiset julkkisjuorut
      107
      686
    10. Älä ees vihjaile mitään

      jos sitten lopulta kuitenkin teet aina noin.. 💔😞
      Ikävä
      52
      587
    Aihe