C Sharp NetWorkStream对象内容怎么清空?
如题所说的。
详细的情况是这样的:
我给服务器端第一次发送了:"1234567890";然后我到服务器端打了个断点,测试接收之后的数据是"1234567890",没错,
但是,第两次之后,我发送了"test";后,问题就来了。我看到服务器接收的数据变成了:"test567890";
也就是说,他只是覆盖了我上一次发送的内容。没覆盖到的仍然连起来发送了。
我所想要的结果因该是我发:"test",服务器端就因该接"test",而不要多其它的字符内容。
于是我就想到了怎么清空NetWorkStream对象内容的方法,但是我在
- C# code
NetWorkStream ns=new NetWorkStream(tcpclient.GetStream());
ns后打上"."点根本没有相关初始化,或是清空该对象内容的方法或属性。
哪位好心的朋友帮帮忙,小弟感激不尽。
[解决办法]
版本信息
.NET Framework
受以下版本支持:2.0、1.1、1.0
.NET Compact Framework
受以下版本支持:2.0、1.0
在新的.NET里面已经不支持了
[解决办法]
你看看你第二次发送的数据,或接收数据的数组是否清空!
[解决办法]
我也遇到同样的问题。。。楼主是怎么解决的??能指教下吗
[解决办法]
不是接收的问题,是发送的问题
在发送前把字节数组清空先
- C# code
Byte[] WriteBytes = new Byte[1024]; TcpClient Client = new TcpClient(...); NetworkStream Stream = Client.GetStream(); WriteBytes[0] = 65; WriteBytes[1] = 48; WriteBytes[2] = 54; WriteBytes[3] = 53; WriteBytes[4] = 48; WriteBytes[5] = 48; WriteBytes[6] = 48; WriteBytes[7] = 51; Stream.Write(WriteBytes, 0, 8); ..... WriteBytes = new Byte[1024]; WriteBytes[0] = 65; WriteBytes[1] = 48; WriteBytes[2] = 54; WriteBytes[3] = 53; WriteBytes[4] = 48; WriteBytes[5] = 48; WriteBytes[6] = 48; WriteBytes[7] = 51; Stream.Write(WriteBytes, 0, 8);
[解决办法]
上面贴的有点小问题,改下
- C# code
Byte[] WriteBytes = new Byte[1024]; TcpClient Client = new TcpClient(...); NetworkStream Stream = Client.GetStream(); WriteBytes[0] = 65; WriteBytes[1] = 48; WriteBytes[2] = 54; WriteBytes[3] = 53; WriteBytes[4] = 48; WriteBytes[5] = 48; WriteBytes[6] = 48; WriteBytes[7] = 51; Stream.Write(WriteBytes, 0, 1024); ..... WriteBytes = new Byte[1024]; WriteBytes[0] = 12; WriteBytes[1] = 33; WriteBytes[2] = 54; Stream.Write(WriteBytes, 0, 1024);
[解决办法]
public static byte[] Read(NetworkStream netstream)
{
byte[] buffer = new byte[1024];
byte[] rebuffer;
try
{
int i = netstream.Read(buffer, 0, buffer.Length);
rebuffer = new byte[i];
Buffer.BlockCopy(buffer, 0, rebuffer, 0, i);
return rebuffer;
}
catch
{
return null;
}
}
这个方法可以解决你的问题!
[解决办法]
返回值为实际需要读取的数据,也就是说去掉了那些没用的数据!
[解决办法]
解决了没?
[解决办法]
NetworkStream stream = client.GetStream();
应该不是NetworkStream 的问题。
问题应该在Write 方法发送的byte[] 或接收的byte[] 中。
[解决办法]