Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


TcpClient och receive

Postades av 2007-01-29 16:10:49 - Niclas Pehrsson, i forum c# (c-sharp), Tråden har 6 Kommentarer och lästs av 573 personer

Jag har en fråga om det finns någon BRA teknik för att ta emot data från en socket ellet TcpClient i .NET.

Det är inte alltid man vet exakt hur mycket bytes som man ska ta emot och vad kan man göra då?

1. Ett alternativ som jag har sätt är att använda

while(TcpClient.Available > 0)
-- recieve kod.

2. eller
while(TcpClient.Available < 1)
Thread.Sleep(50);

while(TcpClient.Available > 0)
--recive kod
Thread.Sleep(50)


3. eller om man vet om hur strömmen skall sluta vilket man ofta kanske inte vet om?
while(Encoding.GetString(ReceivedBuffer, ReceivedBytesCount-3, 3) == "end")
--receive kod 


4. eller om man vet exakt hur mycket data som skall komma.
while(ReceivedBuffer.Length > TotalBytesReceived)
-- receive kod


Problemet med den första är att vad jag har märkt att TcpClient.Available inte uppdateras
såpass snabbt som den behöver. Detta leder till att den är 0 medans data håller på att skickas.

Problemet med den andra är att den tar mycket längre tid och ändå kanske får samma problem som
alternativ 1 har.

Problemet med den tredje är att man ofta kanske inte vet vad den skall sluta med.

Problemet med den fjärde är att man kanske inte alltid kan få antalet man behöver.. eller om servern skall ange det så kan man inte lita på hur mycket bytes som kommer.

Finns det några fler alternativ där man kan lösa detta på ett smidigare sätt eller är det bara att välja och vraka mellan dessa som jag har beskrivit?


Svara

Sv: TcpClient och receive

Postades av 2007-01-29 17:39:14 - Patrik Löwendahl

Använd Accept istället och spawna vidare hanteringen till en annan tråd.


Svara

Sv:TcpClient och receive

Postades av 2007-01-29 18:52:21 - Niclas Pehrsson

Accept?

Jag kanske inte förklarade mig tillräckligt tydligt, det är alltså klienten jag pratar om och inte servern.


Svara

Sv: TcpClient och receive

Postades av 2007-01-29 21:04:18 - Patrik Löwendahl

ok.

men strömmen har ju read och readbyte funktioner som båda returnerar -1 när strömmen är slut, så varför kan du inte använda det på klienten?


Svara

Sv:TcpClient och receive

Postades av 2007-01-30 00:00:59 - Niclas Pehrsson

Nedanstående kod har inte fungerat eftersom strömmen kanske inte har hunnit bli fylld
men om det du skriver stämmer så borde det stå while(BytesReadCount > -1) antar jag.
Men strömmen på en socket tar väl aldrig slut sålänge den inte stängs?

while(BytesReadCount > 0)
{
BytesReadCount = BinaryReader(ReceivedBytesArray, TotalReceivedBytes, ReceivedBytesArray.Length - TotalReceivedBytesCount);
TotalRecivedBytesCount = TotalReceivedBytesCount + BytesReadCount;
}


Svara

Sv:TcpClient och receive

Postades av 2007-01-30 08:46:56 - Niclas Pehrsson

Jag har testat -1 och det fungerar inte, jag tror som jag sa tidigare att det är först när strömmen stängs som den retunerar -1.


Svara

Sv: TcpClient och receive

Postades av 2007-01-30 10:08:03 - Niclas Pehrsson

Jag valde att köra på alternativ 3 i min lösning, det kändes som den säkraste just för mig eftersom protokollet jag använde mig av inte gav exakta storleken på data som skickades, olika applikationer hade sina egna implementationer på mängd data som skickades.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 170
27 953
271 705
685
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies