C# 是否可以从NetworkStream中删除空字符字符(0),而不进行编码?
我有一个反序列化器函数,它以NetworkStream类型获取输入,并反序列化它,然后作为预定义的对象类型(预定义对象)返回 我想做的是,在发送ns变量(networkStream)进行反序列化之前,我想从中删除空字符。 请看下面:C# 是否可以从NetworkStream中删除空字符字符(0),而不进行编码?,c#,.net,vb.net,xml-deserialization,networkstream,C#,.net,Vb.net,Xml Deserialization,Networkstream,我有一个反序列化器函数,它以NetworkStream类型获取输入,并反序列化它,然后作为预定义的对象类型(预定义对象)返回 我想做的是,在发送ns变量(networkStream)进行反序列化之前,我想从中删除空字符。 请看下面: Dim ns As NetworkStream Dim myPreDefinedObj As PreDefinedObj ns = getSomething(stringXML)'This function returns NetworkStream type
Dim ns As NetworkStream
Dim myPreDefinedObj As PreDefinedObj
ns = getSomething(stringXML)'This function returns NetworkStream type response'
'The response value (in NetworkStream type) come from the server that I do not have an access to server to fix the return value to not include the null characters.'
myPreDefinedObj = Deserializer(ns)
Return myPreDefinedObj
希望问题清楚
我正在寻找一种方法,将其编码为字符串。我可以使用[Byte]()
对其进行编码,但在从字符串中删除空字符后,我不确定如何将其重新回滚到NetworkStream类型
可以从NetworkStream类型的变量中删除空字符吗?如果是的话,那怎么做呢
注意:另外,我使用的是vb.net,但也会提供C#建议
谢谢
编辑:我想提供有关getSomething()函数的更多信息
Public Shared Function getSomething(ByVal stringXML As String) As NetworkStream
Try
Dim tcpClient As New System.Net.Sockets.TcpClient()
Dim requestedURL As String = "xxx.xxx.x.x"
Dim portNumber As String = "xxxx"
tcpClient.Connect(requestedURL, portNumber )
Dim networkStream As NetworkStream = tcpClient.GetStream()
If networkStream.CanWrite And networkStream.CanRead Then
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(stringXML)
networkStream.Write(sendBytes, 0, sendBytes.Length)
'I would like to know If I can remove null characters before return networkStream'
Return networkStream
Else
tcpClient.Close()
End If
Catch e As Exception
'do something'
Throw e
End Try
Throw New Exception("No value returned")
End Function
为什么一开始就有坏数据?我会努力找出并解决问题的原因,而不是症状。@JonSkeet:我百分之百同意你的看法,但我希望我有机会做到这一点。数据来自我无权修复返回值的服务器。谢谢你的建议。但是它是怎么进来的呢?我会感到紧张的是,它的错误远远不止是额外的“0字节”。例如,我认为有必要调查您是否丢失了合法数据。@JonSkeet:不幸的是,我不知道为什么响应值返回“0字节”,但我唯一确定的是,我必须尽快处理这个问题:(我想知道这是否是一种情况。您得到了什么错误?流长度是否与预期长度匹配?
Public Shared Function getSomething(ByVal stringXML As String) As NetworkStream
Try
Dim tcpClient As New System.Net.Sockets.TcpClient()
Dim requestedURL As String = "xxx.xxx.x.x"
Dim portNumber As String = "xxxx"
tcpClient.Connect(requestedURL, portNumber )
Dim networkStream As NetworkStream = tcpClient.GetStream()
If networkStream.CanWrite And networkStream.CanRead Then
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(stringXML)
networkStream.Write(sendBytes, 0, sendBytes.Length)
'I would like to know If I can remove null characters before return networkStream'
Return networkStream
Else
tcpClient.Close()
End If
Catch e As Exception
'do something'
Throw e
End Try
Throw New Exception("No value returned")
End Function