Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB.NET] Nopea tiedon siirto

Sivun loppuun

Petja [01.04.2011 20:27:49]

#

VB.Netissä on projekti, joka on yhteydessä palvelimeen. Miten saadaan mahdollisimman nopeasti yhteys palvelimeen ilman "turhia" latausaikoja? Tyhmäähään tuo olisi lähettää kaikki data WebBrowser-objektilla.

Tietoja lähetetään palvelimelle 2 sekunnin kuluttua edelliseen tietoryppään lähettämisestä. Eli siis suhteellisen tiivisti.

Grez [01.04.2011 20:30:27]

#

Niin siis ollaanko tässä tekemässä palvelinta myös itse, vai onko palvelin jo olemassa ja tukee jotain tiettyä protokollaa/protokollia?

Mahdollisimman nopeaa olisi varmaan lähettää UDP-paketteja palvelimelle. Varsinkin jos muutaman paketin hukkuminen matkalla ei haittaa, niin tämä olisi varmaan paras vaihtoehto.

Sitten jos pakettien perille meno on tärkeää, niin avaisin ehkä TCP-putken ja lähettäisin sinne tavaraa sen kahden sekunnin välein.

Petja [01.04.2011 20:32:17]

#

Palvelin ei ole oma. Minulla on vain kotisivutilaa siellä.
Muuta en osaa selittää.

Mitenkäs nämä kaikki hienot putket toteutetaan? Luultavasti vaikeaa?

Grez [01.04.2011 20:35:51]

#

Eli siis ilmeisesti siihen otetaan http-protokollalla yhteyttä...

Varmaan jotain seuraavilla linjoilla voisi olla toimiva:

Dim url = "http://palvelimen.osoite/sivu.php?data=" & _
        System.Web.HttpUtility.UrlEncode(LähetettäväData)
Dim response = System.Net.WebRequest.Create(url).GetResponse()

Petja [01.04.2011 20:52:28]

#

Niin response sisältää sitten vai palautuvan arvon (HTML-koodin)? Tarkoitus olisi siis myös vastaanottaa lähetetyn datan palautus.

Grez [01.04.2011 20:52:58]

#

Kyllä. Laiskotti sen verran ettet viitsinyt kokeilla?

Sinänsä hassua että senkin tuohon kirjoitin, vaikka alkuperäisessä viestissä puhuit ainoastaan lähettämisestä. No, joskus käy tuuri.

Tuon System.Web.HttpUtility:n käyttämiseksi joudut laittamaan projektiin referencen System.Web:iin. Yleensä löytyy seuraavasta paikasta:
C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.dll

Aika outua tosin, että itse en saanut tuota äsken otettua mukaan VB.NET-projektiin. C# puolella toimi normaalisti ja pitäisihän sen toimia VB.Netissäkin.

Petja [01.04.2011 21:08:34]

#

Laitoin refen (onnistui). Silti ei edelleenkään toimi.

Grez [01.04.2011 21:16:47]

#

No, mikä siinä ei toimi? Jokin virheilmoitus kenties? Onko osoitteet ja muut oikein. Ainakin seuraava toimi itselläni vallan mainiosti...

Dim url = "http://grez.info/"
Dim response = System.Net.WebRequest.Create(url).GetResponse()

Niin, ja siis response sisältää vastauksen WebResponse-objektina eli jos haluat sitä merkkijonoa niin se tietenkin täytyy vielä lukea sieltä. (Alunperinhän et ollut sitä pyytänyt niin en ollut laittanut turhaa käsittelyä siihen).

Ideana ei muutenkaan ollut kirjoittaa ohjelmaa kokonaan puolestasi.

Edit: No laitan nyt silti

Dim url = "http://grez.info/"
Dim response = System.Net.WebRequest.Create(url).GetResponse()
Dim sr = New System.IO.StreamReader(response.GetResponseStream())
Dim htmlDokumentti = sr.ReadToEnd()
sr.Close()
response.Close()

Petja [01.04.2011 21:25:20]

#

Nyt toimii.
Pitää vielä netistä tutkiskella tuota WebResponse-objektia, ellet nyt nopeaa vastausta osaa antaa

Edit 1: Nyt toimii, kun esimerkinkin annoit.
Edit 2: Ikävästi tuo merkistökoodaus. Ääkköset kysymysmerkkeinä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta