This message was discovered on microsoft.public.dotnet.languages.vb.
Responses highlighted in red are from those people who are likely to be able to contribute good, authoratitive information to this discussion. They include Microsoft employees, MVP's and others who IMHO contribute well to these kinds of discussions.
| Tiraman :-\) |
Hi,
i have a StreamWriter that hold a System.Net.Sockets.NetwrokStream and the StreamWriter Object Hold An ArrayList which i would like to Serialize And Send it back to the client via the StreamWriter.Flush() Dim writer As New IO.StreamWriter(System.Net.Sockets.TcpClient.GetStream)
writer.Write(myArray)
Dim binF As New BinaryFormatter
how can i Serialize it ?
Thanks!
T:-)
|
|
| |
| | |
| |
| Cor Ligthert |
Hi Tiraman,
This sample I once made should do the job for you.
I hope this helps?
Cor
\\\ Private Sub Form1_Load(ByVal sender _ As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim a As New ArrayList a.Add("I ") a.Add("hope ") a.Add("this ") a.Add("helps?") Dim b As String = SerializeArraylist(a) MessageBox.Show(b) Dim c As ArrayList = DeserializeArraylist(b) End Sub Private Function SerializeArraylist(ByVal _ arraylst As ArrayList) As String Dim bf As New Runtime.Serialization.Formatters.Binary.BinaryFormatter Dim mem As New IO.MemoryStream bf.Serialize(mem, arraylst) Return Convert.ToBase64String(mem.ToArray()) End Function Private Function DeserializeArraylist(ByVal _ arraystring As String) As ArrayList Dim bf As New Runtime.Serialization.Formatters.Binary.BinaryFormatter Dim mem As New IO.MemoryStream(Convert.FromBase64String(arraystring)) Return DirectCast(bf.Deserialize(mem), ArrayList) End Function ///
[Original message clipped]
|
|
| |
| |
| Tiraman :-\) |
Hi Cor ,
it is a good example but it is not cover my problem.
I have a NetworkStream Which I m getting into the StreamWriter which i would like to serialize.
how can i do that ?
Thanks!
Dim writer As New IO.StreamWriter(System.Net.Sockets.TcpClient.GetStream)
"Cor Ligthert" <Click here to reveal e-mail address> wrote in message news:Click here to reveal e-mail address... [Original message clipped]
|
|
| |
| |
| Cor Ligthert |
[Original message clipped]
Yes and what is wrong with it the sample first serialize and than deserilize in one sample.
You have to use serialize, stream, and deserialize, however that was not the problem I thought?
Cor
|
|
| |
| |
| Tiraman :-\) |
Hello Cor,
I m not sure that i understood you so here is my example and i will be happy if you let me know where , what and why is the problem :-) Private client As TcpClient
Sub xxx(ByVal obj As Object)
SyncLock client.GetStream
Dim sw As New IO.StreamWriter(client.GetStream)
sw.Write(CType(obj,ArrayList))
Dim bf As New BinaryFormatter
bf.Serialize(sw, obj)
sw.Flush() sw.Close()
End SyncLock
End Sub
Thanks!
"Cor Ligthert" <Click here to reveal e-mail address> wrote in message news:Click here to reveal e-mail address... [Original message clipped]
|
|
| |
| |
| Cor Ligthert |
Tiraman this is the serialization part in my code
Dim bf As New Runtime.Serialization.Formatters.Binary.BinaryFormatter dim mem As New IO.MemoryStream bf.Serialize(mem, arraylst) Dim myString as STring = Convert.ToBase64String(mem.ToArray())
When I look at your code I see
> Private client As TcpClient Sub xxx(ByVal myArray As as Arraylist) ' passing it as arraylist saves casting [Original message clipped]
bf.Serialize(mem, myArray) Dim myString as String = Convert.ToBase64String(mem.ToArray()) sw.Write(myString) [Original message clipped]
I hope this helps?
Cor
|
|
| |
| |
| Tiraman :-\) |
Hi Cor,
Now the Serialize ok but i m getting the following error in the Deserialize method.
System.Runtime.Serialization.SerializationException: No map for object 1953724755. at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObject() at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run() at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(Head erHandler handler, __BinaryParser serParser, Boolean fCheck, IMethodCallMessage methodCallMessage) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(S tream serializationStream, HeaderHandler handler, Boolean fCheck, IMethodCallMessage methodCallMessage) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(S tream serializationStream, HeaderHandler handler) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(S tream serializationStream) at frmMain.DoRead(IAsyncResult ar) in frmMain.vb:line 769"
line 769 ---> MyArray = DirectCast(bf.Deserialize(ns), ArrayList)
any idea ?
Thanks !
"Cor Ligthert" <Click here to reveal e-mail address> wrote in message news:Click here to reveal e-mail address... [Original message clipped]
|
|
| |
| |
| Cor Ligthert |
Hi Tiraman,
Without any code, what do you think I am?
Cor [Original message clipped]
|
|
| |
| |
| Tiraman :-\) |
A Good Guy :-)
here is the code,
Dim ns As NetworkStream = client.GetStream()
Dim bf As New BinaryFormatter
Dim myarray As New ArrayList
myarray = DirectCast(bf.Deserialize(ns), ArrayList)
"Cor Ligthert" <Click here to reveal e-mail address> wrote in message news:Click here to reveal e-mail address... [Original message clipped]
|
|
| |
| |
| Cor Ligthert |
Tiraman,
Roughly written in this message.
\\\ dim ns as new IO.streamreader Dim ns As NetworkStream = client.GetStream() dim arraystring as string = ns.read Dim bf As New BinaryFormatter Dim mem As New IO.MemoryStream(Convert.FromBase64String(arraystring)) dim arraylist as arraylist = DirectCast(bf.Deserialize(mem), ArrayList) ///
I hope this goes as well
Cor
|
|
| |
| |
| Tiraman :-\) |
Hi Cor, Once Again Thanks for your help.
now every thing working fine but i still have one problem. with the Convert.FromBase64String i can work with very small strings and i would like to work with more then 64 bit.
any idea ?
Thanks
"Cor Ligthert" <Click here to reveal e-mail address> wrote in message news:eI%Click here to reveal e-mail address... [Original message clipped]
|
|
| |
| |
| Cor Ligthert |
Sorry Tiraman,
Not direct, my sugestion is to put this question again as a new thread in the group.
Cor
[Original message clipped]
|
|
| |
| | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|