Aloita lataamalla tuosta alta Marcoderin tekemä paketti, josta löytyy tarvittavat tiedostot ja pari esimerkkiä cbNetworkin käytöstä. (Koska vanhat foorumit ovat kadonneet, en oikeata linkkiä Marcoderin cbNetwork-sivulle enää löytänyt...) Sitten lukaise läpi tämä Valtzun tekemä tuto: http://valtzu.arkku.net/tuto/
Ja eikun sitten venkslailemaan. Jos jokin kohta on epäselvä niin kysele pois vain, tyhmiinkin kysymyksiin vastailen
EDIT (27.1.2011): Jos kaipailet tietoa, miten saat helposti ladattua nettisivusta tietoa CB-ohjelmallesi, niin käytä GetHTTPString-funktiota.
Virheiden tarkastelulista, jos kohtaat outoja ongelmia niin tarkista että nämä ovat ainakin oikein. Tällä hetkellä nämä ovat keskittyneet clientin kaatumiseen johtaviin syihin, mutta näitä voi myös soveltaa palvelimen puolelle. (Kts. alkuperäinen viesti)
- Kai sulla on molemmissa (client ja server) sama portti?
- Kai muistat aina alustaa muistipalan, ennen kuin laitat siihen dataa?
- Kai muistat laittaa viestiä lähetettäessä jonkinlaisen "lopetustavun", jotta vastaanottava ohjelma tietää missä vaiheessa sen pitää lopettaa lukeminen?
- Kai muistat sen, että muistipalassa on aina ensimmäisenä saadun datan pituus, joka pitää lukea pois _Net_GetInt() komennolla?
- Kai muistat clientin puolella käyttää jotain tapaa, jolla luetaan dataa serveriltä vasta sen jälkeen kun jotain dataa on lähetetty? (esim. globaali muuttuja, jonka arvoa vaihdetaan dataa lähetettäessä ja nollataan datan lukemisen jälkeen)
- Lukemisen kohtaan tämä (gClientDataSended on globaali muuttuja):
Code: Select all
// Ei jäädä lukemaan dataa jos mitään ei ole lähetettykään If gClientDataSended = False Then Return True // Nyt luetaan nRet = ClientRead() // Jos paluuarvo on alle 0 niin kaikki data ei ole vielä tullut palvelimelta If nRet < 0 Then Return True // Lukemisessa tuli joku virhe If nRet <> 0 Then // Jos virhe oli "Connection timed out" niin ei välitetä siitä If nRet = 10060 Then Return True errMsg$ = "(" + nRet + ") " + GetNetErrorString(nRet) MakeError errMsg EndIf // Nyt data on luettu. Nollataan muuttuja joka antaa luvan lähettää lisää dataa serverille. gClientDataSended = False // Muistipalan alussa on aina saapuneen datan pituus joka luetaan tässä pois _Net_GetInt()
- Ja lähettämisen kohtaan tämä:
Code: Select all
// Jos viesti on jo lähetetty mutta vastausta ei ole luettu niin ei lähetetä uudestaan If gClientDataSended = True Then Return False // Muistipalan alustus ensin _Net_InitMemBlock() //... tässä lisätään lähetettävät tiedot muistipalaan ... // Kirjoitetaan vielä viestin loppumerkki ja lähetetään. _Net_PutByte(NET_END) // ClientSendBack lähettää datan serverille ja jää heti odottamaan vastausta // mutta palauttaa kuitenkin kontrollin heti tänne. Vastausta siis odotellaan "taustalla". ClientSendBack() // Laitetaan muuttujaan tieto että dataa on lähetetty. gClientDataSended = True
- Lukemisen kohtaan tämä (gClientDataSended on globaali muuttuja):
- Kai luet/lisäät saman määrän tietoa niin serverin kuin clientin puolella, ja samassa järjestyksessä? (esim. "viestinTyyppi-string-string-int-lopetustavu")