cbTCP - Nettikirjasto

Jaa meneillään olevat projektisi tai valmiit pelit muun yhteisön kanssa täällä.
Post Reply
User avatar
Sami345
Advanced Member
Posts: 349
Joined: Fri Aug 31, 2007 4:52 pm
Contact:

cbTCP - Nettikirjasto

Post by Sami345 » Thu Jul 16, 2009 1:56 am

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:
Attachments
cbTCP.rar
v2.04
(294.45 KiB) Downloaded 260 times
Last edited by Sami345 on Fri Jul 31, 2009 3:19 pm, edited 5 times in total.
Projektit: Fiperus - Jäädytetty pidemmäksi aikaa.
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/

User avatar
MikkoK
Devoted Member
Posts: 813
Joined: Thu Jun 05, 2008 2:13 pm
Location: City 17

Re: cbTCP - Nettikirjasto

Post by MikkoK » Thu Jul 16, 2009 2:36 am

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.)

Code: Select all

#aha. @ IRCNet
<Grandi> Voit laittaa jo valmiiks hailaittiin "Amis-Mikko", koska alan kutsua sua sillä nimellä.

User avatar
Sami345
Advanced Member
Posts: 349
Joined: Fri Aug 31, 2007 4:52 pm
Contact:

Re: cbTCP - Nettikirjasto

Post by Sami345 » Thu Jul 16, 2009 3:12 am

Tulevassa versiossa tulee olemaan blockkaamaton recv, joka mahdollistaa IRC-clientin teon.
Projektit: Fiperus - Jäädytetty pidemmäksi aikaa.
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/

Henkru
Advanced Member
Posts: 359
Joined: Sun Aug 26, 2007 2:46 pm

Re: cbTCP - Nettikirjasto

Post by Henkru » Thu Jul 16, 2009 9:29 pm

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/.

User avatar
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 9:25 am

Re: cbTCP - Nettikirjasto

Post by Sly_Jack0 » Thu Jul 16, 2009 10:27 pm

Hmm... Eikös nyt sitten saataisi tiedostojen lähetyskin tehtyä kätevästi, kun kerta on TCP-protokolla käytössä?

Henkru
Advanced Member
Posts: 359
Joined: Sun Aug 26, 2007 2:46 pm

Re: cbTCP - Nettikirjasto

Post by Henkru » Thu Jul 16, 2009 11:13 pm

Miksei saataisi? Kyllä se cbNetworkillakin on mahdollista, tosin dataa joutuu tarkistaa aika rankasti.

User avatar
Sami345
Advanced Member
Posts: 349
Joined: Fri Aug 31, 2007 4:52 pm
Contact:

Re: cbTCP - Nettikirjasto

Post by Sami345 » Thu Jul 16, 2009 11:23 pm

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.

Projektit: Fiperus - Jäädytetty pidemmäksi aikaa.
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/

User avatar
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: cbTCP - Nettikirjasto

Post by SPuntte » Thu Aug 27, 2009 3:07 pm

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.
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX

User avatar
Valtzu
Active Member
Posts: 115
Joined: Sun Aug 26, 2007 2:40 pm
Location: Sauvo
Contact:

Re: cbTCP - Nettikirjasto

Post by Valtzu » Thu Aug 27, 2009 3:46 pm

SPuntte wrote:Marcoderin systeemissähän palvelin lähettää saman tiedon kaikkialle
Ei lähetä. Mistäs moisen olet päähäsi saanut? :)

User avatar
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: cbTCP - Nettikirjasto

Post by JATothrim » Thu Aug 27, 2009 6:29 pm

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.
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.

User avatar
KilledWhale
Tech Developer
Tech Developer
Posts: 543
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: cbTCP - Nettikirjasto

Post by KilledWhale » Fri Aug 28, 2009 9:26 am

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.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras

User avatar
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: cbTCP - Nettikirjasto

Post by SPuntte » Fri Aug 28, 2009 12:17 pm

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?
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX

User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: cbTCP - Nettikirjasto

Post by esa94 » Sun Sep 13, 2009 3:19 pm

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!

User avatar
mokkeri
Member
Posts: 84
Joined: Sat Apr 05, 2008 9:22 pm

Re: cbTCP - Nettikirjasto

Post by mokkeri » Fri Oct 30, 2009 12:05 pm

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

Post Reply