打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
TcpClient接收数据不全

c#在使用TcpClient一般首发数据如下:

  1. private string Tcp(string senddata)
  2. {
  3. try
  4. {
  5. TcpClient client = new TcpClient();
  6. client.Connect(ip, 6789);
  7. //建立连接服务端的数据流
  8. NetworkStream ns = client.GetStream();
  9. byte[] buffer = Encoding.UTF8.GetBytes(senddata);
  10. ns.Write(buffer, 0, buffer.Length);
  11. int count = 0;
  12. List<byte> ls = new List<byte>();

  13. buffer = new byte[bufferSize];
  14. while (true)
  15. {
  16. count = ns.Read(buffer, 0, buffer.Length);
  17. ls.AddRange(buffer);
  18. buffer = new byte[bufferSize];
  19. if (count < bufferSize)
  20. {
  21. break;
  22. }
  23. }
  24. buffer = ls.ToArray();
  25. string recStr = Encoding.UTF8.GetString(buffer);
  26. client.Close();
  27. return recStr;
  28. }
  29. catch
  30. {
  31. return null;
  32. }
  33. }

这么写小量数据是没有问题的,但是在面对大量数据时,经常会出现接收不全。但是在调试的时候,发现接收是完全的。很是奇怪。

经过多次调试发现,在接收大量数据的时候,特别是超过1k时,一定要使用Thread.Sleep(10)函数,以便cpu有时间来处理数据到缓冲区。

  1. private string Tcp(string senddata)
  2. {
  3. try
  4. {
  5. TcpClient client = new TcpClient();
  6. client.Connect(ip, 6789);
  7. //建立连接服务端的数据流
  8. NetworkStream ns = client.GetStream();
  9. byte[] buffer = Encoding.UTF8.GetBytes(senddata);
  10. ns.Write(buffer, 0, buffer.Length);
  11. int count = 0;
  12. List<byte> ls = new List<byte>();

  13. buffer = new byte[bufferSize];
  14. while (true)
  15. {
  16. count = ns.Read(buffer, 0, buffer.Length);
  17. ls.AddRange(buffer);
  18. buffer = new byte[bufferSize];
  19. if (count < bufferSize)
  20. {
  21. break;
  22. }
  23. Thread.Sleep(10);
  24. }
  25. buffer = ls.ToArray();
  26. string recStr = Encoding.UTF8.GetString(buffer);
  27. client.Close();
  28. return recStr;
  29. }
  30. catch
  31. {
  32. return null;
  33. }
  34. }


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C#中使用TCP通信
C#中的socket编程入门实例
C#网络编程(同步传输字符串) - Part.2 - C# 编程 - TraceFact....
C# TcpListener和TcpClient的应用
C# Socket的TCP通讯
加密网络数据
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服