Page 1 of 1

cbTCP - Nettikirjasto

Posted: Thu Jul 16, 2009 1:56 am
by Sami345
cbTCP on nettikirjasto CoolBasicille. Sen avulla voit esim. yhdistää IRC-palvelimeen, noutaa nettisivuja tai tehdä HTTP-palvelimen.

Oikeilla paketeilla myös POST-paramametrit onnistuvat.

Pitemmittä puheitta tässä on paketti, joka sisältää DLL, 4 esimerkkiohjelmaa ja funktioiden kuvaukset:

Re: cbTCP - Nettikirjasto

Posted: Thu Jul 16, 2009 2:36 am
by MikkoK
Todella hyvä varsinkin tuo ircbottijuttu. :D En oikein ymmärrä mitään joten en voi arvostella mitenkään. (Hyvä että pääsee irkkiin mutta Sami jo kertoi että ei voi tehdä clienttiä kun CB ei tue säikeitä tjsp.)

Re: cbTCP - Nettikirjasto

Posted: Thu Jul 16, 2009 3:12 am
by Sami345
Tulevassa versiossa tulee olemaan blockkaamaton recv, joka mahdollistaa IRC-clientin teon.

Re: cbTCP - Nettikirjasto

Posted: Thu Jul 16, 2009 9:29 pm
by Henkru
Noniin tulihan tämä vihdoinki. Toki olis tuolla omissa projekteissa melkein valmis samanlainen versio mut jää nyt tekemättä loppuun. Mites nopeuden puoli?
Tosin ei tällä vielä paljon tehdä, kun recv pysäyttää ajon, mutta jos kerran on tulossa recv joka ei blokaka niin o/.

Re: cbTCP - Nettikirjasto

Posted: Thu Jul 16, 2009 10:27 pm
by Sly_Jack0
Hmm... Eikös nyt sitten saataisi tiedostojen lähetyskin tehtyä kätevästi, kun kerta on TCP-protokolla käytössä?

Re: cbTCP - Nettikirjasto

Posted: Thu Jul 16, 2009 11:13 pm
by Henkru
Miksei saataisi? Kyllä se cbNetworkillakin on mahdollista, tosin dataa joutuu tarkistaa aika rankasti.

Re: cbTCP - Nettikirjasto

Posted: Thu Jul 16, 2009 11:23 pm
by Sami345
Päivitys, joka lisäsi yhden uuden funktion RecvSize() ja sitä esittelevän esimerkkiohjelman (IRC-client) on ilmestynyt. Tämän funktion avulla voi myös toteuttaa tarpeen vaatiessa blockkaamattoman recv.

Nopeudesta en tiedä, en ole jaksanut testata siirtonopeutta.
EDIT:

Tiedosto löytyy aloitusviestistä.

EDIT:

Oli eksynyt bugi koodiin. Nyt on aloitusviestissä korjattu paketti.

EDIT:

Nähtävästi korjaus poisti bugin, mutta toi uuden. Nyt sekin korjattu.

EDIT:

Taas bugi... Tällä kertaa ei mitään sen vakavampaa kuin funktionimen typotus.

EDIT:

Testasin nopeutta ja parhaimmillaan pääsin jopa yli 2 megabitin sekunttivauhtiin.

EDIT:

Uusi versio, korjattu bugi joka aiheutti turhan säikeen taustalle.


Re: cbTCP - Nettikirjasto

Posted: Thu Aug 27, 2009 3:07 pm
by SPuntte
Turhan vähälle keskustelulle jäänyt tämä aihe minusta. Ainakin jos cbNetwork-ketjuun vertaa.

Onko kukaan vertaillut tämän käytettävyyttä/nopeutta/varmuutta cbNetworkin eli vastaavan UDP-systeemin kanssa? Tietysti myös tarvittavat resurssit tietokoneelta olisi yksi vertailtava näkökohta. Vuoropohjaisissa peleissä, kuten kortti- tai civilization-tyypin peleissä yhteyden hitaus tai suurempi resurssien tarve ei vielä haittaa, mutta reaaliaikaisissa peleissä se voi jo muodostua pullonkaulaksi. Tosin 2 megabittiä kuulostaa aika paljolta - taitaa olla meganen alaspäinen yhteys täällä käytössä :P

En ole eri protokollien yksityiskohtiin kauheasti perehtynyt, mutta ajattelin tässä jotain verkkotoiminnallisuuksia treenailla ja päätin kokeilla tätä kirjastoa, koska se vaikutti yksinkertaisemmalta ja varmemmalta kuin Marcoderin kirjasto (jolla jo joskus näpertelin - huonolla menestyksellä tosin). Tulikin tuossa sellainen periaatteellinen asia mieleen, että eikö tässä luoda ja käsitellä jokainen yhteys aina erikseen, erillisenä socketina? Serveri siis käsittelee yhtä monta erillistä yhteyttä (socketia) kuin asiakkaita on? Marcoderin systeemissähän palvelin lähettää saman tiedon kaikkialle ja eri asiakkaille kuuluvat viestit täytyy jotenkin merkitä viestin sisältöön? Vai olenko ihan hakoteillä?

Selailin pakettia ja huomasin ettei dokumentaatio ole mikään kaikenkattava mutta silti välttämättömät asiat kattava. Jotain tutoriaalinomaista tekstiä voisi olla (kuten vastaava Valtzun cbNetwork-tuto), tai muuten ainakaan aloittelijan ei ole helppo saada kirjastosta otetta, kun vieraita asioita on niin paljon.

Re: cbTCP - Nettikirjasto

Posted: Thu Aug 27, 2009 3:46 pm
by Valtzu
SPuntte wrote:Marcoderin systeemissähän palvelin lähettää saman tiedon kaikkialle
Ei lähetä. Mistäs moisen olet päähäsi saanut? :)

Re: cbTCP - Nettikirjasto

Posted: Thu Aug 27, 2009 6:29 pm
by JATothrim
Marcoderin UDP systeemi on hyvä. Mutta yksi vika siinä on: Paketteja voi lähettää serveriltä, jos clientti ei ole pyytänyt mitään siltä. Mm. BroadCast on tämän takia vaikeaa toteuttaa serverin puolella, se on myös hidasta. Jokun pitäisi tehdä uusi versio tuosta UDP kirjastosta. : /
SPuntte: Pieni selostus TCP protokollan toiminnasta: Client ottaa yhteyttä serveriin. Serveri hyväksyy yhteyden ja saa samalla socketin yhteydelle. (yksi socket per yhteys) Serveri lukee soketista dataa recv toiminnolla, kunnes data loppuu tai yhteys katkeaa. Serveri käsittelee datan. Serveri lähettää samaa sockettia pitkin dataa Clientille send toiminnolla. hieman tähän suuntaan ohjelmat käyttävät TCP:tä. Saatan olla tosin hieman hakoteillä, kun olen UDP:tä enemmän käyttänyt.

Re: cbTCP - Nettikirjasto

Posted: Fri Aug 28, 2009 9:26 am
by KilledWhale
JATothrim wrote:Marcoderin UDP systeemi on hyvä. Mutta yksi vika siinä on: Paketteja voi lähettää serveriltä, jos clientti ei ole pyytänyt mitään siltä. Mm. BroadCast on tämän takia vaikeaa toteuttaa serverin puolella, se on myös hidasta. Jokun pitäisi tehdä uusi versio tuosta UDP kirjastosta. : /
SPuntte: Pieni selostus TCP protokollan toiminnasta: Client ottaa yhteyttä serveriin. Serveri hyväksyy yhteyden ja saa samalla socketin yhteydelle. (yksi socket per yhteys) Serveri lukee soketista dataa recv toiminnolla, kunnes data loppuu tai yhteys katkeaa. Serveri käsittelee datan. Serveri lähettää samaa sockettia pitkin dataa Clientille send toiminnolla. hieman tähän suuntaan ohjelmat käyttävät TCP:tä. Saatan olla tosin hieman hakoteillä, kun olen UDP:tä enemmän käyttänyt.
Suurin ero on siinä, että TCP tarkistaa jokaisen paketin perillepääsyn, ja sen että ne ovat valideja. TCP siis vaatii molemmissa päissä auki olevat portit, mutta UDP sen sijaan lähettää paketit joka tapauksessa välittämättä siitä huoliiko vastapää niitä vai ei.

Re: cbTCP - Nettikirjasto

Posted: Fri Aug 28, 2009 12:17 pm
by SPuntte
Valtzu wrote:
SPuntte wrote:Marcoderin systeemissähän palvelin lähettää saman tiedon kaikkialle
Ei lähetä. Mistäs moisen olet päähäsi saanut? :)
Mietinkin vähän, että mitenkähän se käytännössä toimisi.. :oops:

No tässä sen ymmärtää helpommin, kun jokaiselle yhteydelle on oma socket. cbNetworkissa homma toimii siis ilmeisesti siten, että luettaessa dataa funktiolla ServerRead() saadaan DLL:n tieto aina yhdestä clientistä kerrallaan. Kun sitten tämän jälkeen lähetetään dataa takaisin ServerSend()-funktiolla, lähtee tieto samaan paikkaan, josta edellinen saapuva tieto tuli. Kaikki tämä tapahtuu DLL:n tasolla eikä sitä tarvitse hoitaa CB-puolella. Menikö nyt oikein?

Mitä tapahtuu, jos palvelimelta lähettää dataa ennen kuin yksikään asiakas on ottanut siihen yhteyttä? Ja tuo mainittu BroadCast tarkoittaa ilmeisesti sitä, että palvelin lähettäisi asiakkaalle jatkuvana virtana jotain dataa?

Re: cbTCP - Nettikirjasto

Posted: Sun Sep 13, 2009 3:19 pm
by esa94
Ilmoitusluonteisena asiana: Oma toteutukseni tästä on DLL-puolella lähes valmis, ja siitä puuttuu lähinnä blokkaamaton recv, select ja poll. Se myös käyttää suoraan WinSockia, eli muita DLL:iä ei tarvita!

Re: cbTCP - Nettikirjasto

Posted: Fri Oct 30, 2009 11:05 am
by mokkeri
Mites tällä onnistuu ihan perus php-filun haku? Siis yhdistetään serverille vaikka "http://example.com/test.php" ja lisätään saatu data tiedostoon?