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


Tcp/Ip vs. BinaryFormatter

Postades av 2004-05-10 14:50:33 - Per Tornberg, i forum vb.net, Tråden har 11 Kommentarer och lästs av 848 personer

Hej!

Behöver lite hjälp.
Försöker serialisera objekt med binary.binaryformatter och skicka dem via tcp/ip över till en annan applikation. Där ska de deserialiseras till objekt igen.

Problemet är att den text som skickas över tcp/ip ändras (den ändrar på visa chars, text chr(255) blir chr(195)+chr(192)) och skapar då problem vid deserialiseringen.

Hur ska man göra för att den byte() array man fick vid binformatter.serialize ska skickas över i sitt befintliga skicka till den andra applikationen?

Tacksam för tips!

//Pär


Svara

Sv: Tcp/Ip vs. BinaryFormatter

Postades av 2004-05-10 14:59:02 - Pelle Johansson

Då tror jag att någonstans omvandlas din binära sträng till annat format. Hade det varit binärt hela tiden hade ingen konvertering gjorts någonstans. Det är inte så att du har 8 bitar ASCII och får över det till 7 någonstans?

Skapar du även filen binärt när den tagits emot?


Svara

Sv: Tcp/Ip vs. BinaryFormatter

Postades av 2004-05-10 15:27:20 - Per Tornberg

Jag skapar aldrig någon fil när jag serialiserar. Jag använder MemoryStream och omvandlar till byte() array via MemoryStream.GetBuffer. Och det fungerar som det ska.

Jag tror den omvandlas när datan skickas/tas emot. Så här ser sändfunktionen ut.

Private Sub Send(ByVal c() As Char)
Dim w As New IO.StreamWriter(tcpKlient.GetStream)
w.Write(c, 0, c.Length)
w.Flush()
End Sub

Så för att skicka datan måste byte() arrayen omvandlas till char() array. Detta gör jag genom att loopa igen byte() arrayen och omvandla via chr().
Då får jag en char() array som är rätt kodad. Men när jag sedan skickar över den så ändras kodning på något sätt. Vet inte riktigt vad jag gör fel?

Man kanske ska använda sig av System.Text istället, typ:

dim by() as byte = memorystream.getbuffer
dim ch() as char = system.text.asciiencoding.ascii.getchars(by)

Problemet är hur man i så fall kodar tillbaka till samma kodning som den binära strängen hade från början? Några tips?


Svara

Sv: Tcp/Ip vs. BinaryFormatter

Postades av 2004-05-10 15:29:00 - Pelle Johansson

Finns w.BinaryWrite(c, 0, c.Length) ?


Svara

Sv: Tcp/Ip vs. BinaryFormatter

Postades av 2004-05-10 15:36:45 - Per Tornberg

Nej tyvärr. Har kollar efter något sätt att ändra formatet, men hittar bara en get-function som returnerar den aktuella kodningen. Har försökt att ändra via den, men den är som sagt read-only.

Om jag omvandlar byte() arrayen till system.text.asciiencoding.ascii.getchars()
så fungerar det att skicka över datan. Problemet är då istället att kunna omvandla tillbaka till det binära formatet så att det fungerar att deserialisera.


Svara

Sv: Tcp/Ip vs. BinaryFormatter

Postades av 2004-05-10 15:37:45 - Johan Bovin

Testa att skicka med encodingen när du skapar din StreamWriter. By default är den nog satt till UTF-8 istället för till Default.
Alltså: Dim w As New IO.StreamWriter(tcpKlient.GetStream, System.Text.Encoding.Default)

Sen om du läser upp den på andra sidan så kan du ju kolla encodingen med byteordermarken (gissar att den skickas med oxå) i så fall kan du använda
konstruktorn i StreamReader med Stream och bool där bool är detectencodingfrombyteordermark...


Svara

Sv: Tcp/Ip vs. BinaryFormatter

Postades av 2004-05-10 15:45:03 - Per Tornberg

Tack!!!

Det löste sig genom att ange encodingen när man skapade IO.StreamWriter. Underbart, ni har räddat min dag! Tusen tack Pelle och Arathorn!

//Pär


Svara

Sv: Tcp/Ip vs. BinaryFormatter

Postades av 2004-05-10 15:51:35 - Johan Bovin

Detta är ett klassiskt problem eller totalt värdelös implementation av strömmar... jag fattar inte varför de alltid går på utf-8istället för default. Om man nu har en Encoding.Default som borde vara den Defaulta encodingen så borde väl de klasser som har med encoding att göra använda sig av den istället.. nåja, som vanlig måste man lusläsa dokumentationen...


Svara

Sv: Tcp/Ip vs. BinaryFormatter

Postades av 2004-05-10 22:37:08 - Mattias Sjögren

>jag fattar inte varför de alltid går på utf-8istället för default.

Antagligen för att Default är systemberoende, och resultatet kan variera beroende på dina regionsinställningar.

Just därför bör du heller definitivt inte använda Default för text som ska kodas på en maskin och avkodas på en annan. Det finns ingen garanti att resultatet blir det samma då. UTF-8 eller UTF-16 är mycket bättre val för distribuerade system.


MS


Svara

Sv: Tcp/Ip vs. BinaryFormatter

Postades av 2004-05-11 08:10:17 - Johan Bovin

Nä, visst är det så men jag tycker att det ställer till mer än hjälper. Det är ju hur många frågor som helst på just detta med varför det blir fel med strömmar, och på alla är lösningen att man måste behandla Encodingen. Det är ju en fråga om hur man ser på vad som är Default.
Ex: om jag använder mig av strängar i mitt program så blir de encodade by default med Encoding.Default därför är det mer intuitivt att när jag sparar dem på disk eller skickar dem över ett nätverk att det fortfarande är samma encoding. Därmed är det inte sagt att den encodingen är bra, men jag anser att nånstans har man gjort ett feltänk eller så har man inte tänkt på att det är rätt många som har en annan encoding än just UTF-8, vilket ju gör jobbet lite jobbigare för oss....

Lite tankar bara...


Svara

Sv: Tcp/Ip vs. BinaryFormatter

Postades av 2004-05-11 21:30:01 - Mattias Sjögren

>Det är ju hur många frågor som helst på just detta med varför det blir fel med strömmar, och på alla är lösningen att man måste behandla Encodingen.

Jasså? De flesta såna frågor jag har sett har att göra med att läsa någon existerande textfil, och då är det klart att man måste tänka till en gång extra så man använder rätt kodning.


>Ex: om jag använder mig av strängar i mitt program så blir de encodade by default med Encoding.Default

I vilket sammanhang?


MS


Svara

Sv: Tcp/Ip vs. BinaryFormatter

Postades av 2004-05-12 07:57:27 - Johan Bovin

äsch, jag vet inte vad jag dillar om....


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

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 570 721
27 958
271 751
5 666
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