TcpClient tcpclnt = new TcpClient();
tcpclnt.Connect(StrIp, port);
Stream stm = tcpclnt.GetStream();
UTF8Encoding asen = new UTF8Encoding(); byte[] bb = new byte[1024];
int k = stm.Read(bb, 0, 1024);
while (k > 0)
{
string Str = System.Text.UTF8Encoding.UTF8.GetString(bb, 0, k);
OnlineInf.Write(Str);
k = stm.Read(bb, 0, 1024);
}
程序执行时,如果stm中的数据少于1024,则一切正常.
如果大于1024,则第1025个数据丢失,后面的数据也正常,
如:".....我是谁......"这一段,
如果".....我"长度为1024,则".....我"和"谁....."都正常取出,只有"是"丢了.
请问该如何处理????
tcpclnt.Connect(StrIp, port);
Stream stm = tcpclnt.GetStream();
UTF8Encoding asen = new UTF8Encoding(); byte[] bb = new byte[1024];
int k = stm.Read(bb, 0, 1024);
while (k > 0)
{
string Str = System.Text.UTF8Encoding.UTF8.GetString(bb, 0, k);
OnlineInf.Write(Str);
k = stm.Read(bb, 0, 1024);
}
程序执行时,如果stm中的数据少于1024,则一切正常.
如果大于1024,则第1025个数据丢失,后面的数据也正常,
如:".....我是谁......"这一段,
如果".....我"长度为1024,则".....我"和"谁....."都正常取出,只有"是"丢了.
请问该如何处理????
你可以将str反向编码成UTF-8字节流,其长度如果与k不相等,则说明有数据丢失了。建议你采用UDP协议来收发数据,如果一定要用TCP协议,请采用一定的技术手段确保收到的数据是完整的。
dz_huanbao说的"采用一定的技术手段确保收到的数据是完整的",能提个思路吗?
谢谢!!!!!!!!!!!!!