当前位置:   article > 正文

Unity网络通信之Tcp与UDP协议概述以及两者的区别_unity tcp和udp的区别

unity tcp和udp的区别

一、什么是TCP

 

二、 Tcp的连接和断开 

三、TCP通过什么方式提供可靠性 

四、TCP编码部分 

      4.1   TcpListener (服务端) 

  1. using System.Net.Sockets;
  2. using System.Net;
  3. using System.Reflection;
  4. namespace ConsoleApplication1
  5. {
  6. class Program
  7. {
  8. //创建服务器端,监听客户端
  9. public static void Main(string[] args)
  10. {
  11. IPAddress ip = IPAddress.Parse("127.0.0.1");
  12. int port = 5566;
  13. TcpListener sever=new TcpListener(ip,port);
  14. sever.Start();//开启之后才能执行下面的监听
  15. sever.AcceptTcpClient();//监听客户端的连接
  16. }
  17. }
  18. }

    4.2    TCPClient(客户端)

  1. using System.Net.Sockets;
  2. using System.Net;
  3. using System.Reflection;
  4. namespace ConsoleApplication1
  5. {
  6. class Program
  7. {
  8. //创建客户端,连接服务器,读取写入数据
  9. public static void Main(string[] args)
  10. {
  11. IPAddress ip = IPAddress.Parse("127.0.0.1");
  12. int port = 5566;
  13. TcpClient client=new TcpClient();
  14. client.Connect(ip,port);//客户端连接服务器端
  15. //当服务器端与客户端连接上之后,就该获取两个计算机之间传递的数据,
  16. // NetworkStream stream = client.GetStream();
  17. //发送和接收都会用到数据流
  18. // stream.Read();
  19. // stream.Write();
  20. // client.GetStream();// 可以从数据流中获取.获取数据流的方法,
  21. }
  22. }
  23. }

五、 UDP协议

UDP协议不分服务器与客户端的区别,它并不是由一台机器向一台主机器传,UDP先是以数据报的模式扔到网上,自己去下载就可以了,所以UDP协议接收与发送都是Client。如下所示:
  1. using System;
  2. using System.Net.Sockets;
  3. using System.Net;
  4. using System.Reflection;
  5. using System.Text;
  6. using System.Threading;
  7. namespace ConsoleApplication1
  8. {
  9. class Program
  10. {
  11. public static void Main(string[] args)
  12. {
  13. UDPtest.Start();
  14. }
  15. }
  16. class UDPtest
  17. {
  18. //一个类中既要收又要发数据的话需要线程来辅助,不然会堵塞
  19. public static void Start()
  20. {
  21. UdpClient client=new UdpClient(new IPEndPoint(IPAddress.Any,0));
  22. IPEndPoint endpoint=new IPEndPoint(IPAddress.Parse("255.255.255.255"),7788);
  23. //服务端把一句话发送给客户端
  24. byte[] buf= Encoding.Default.GetBytes("Hello world"); //字符串进行转化成想要的字节流
  25. Thread tr=new Thread( new ThreadStart(Receive));//开启线程调用另一个协程
  26. tr.IsBackground = true;//确保开启的线程是主线程
  27. tr.Start();
  28. while (true)//循环,连着发送数据
  29. {
  30. client.Send(buf, buf.Length, endpoint);//向谁发送多长的字节
  31. Thread.Sleep(1000);//每隔一秒休眠一下
  32. }
  33. }
  34. //接收数据
  35. static void Receive()
  36. {
  37. UdpClient client=new UdpClient(new IPEndPoint(IPAddress.Any,7788));
  38. IPEndPoint endpoint=new IPEndPoint(IPAddress.Parse("255.255.255.255"),0);
  39. while (true)//因为是循环发送,我们就循环接收
  40. {
  41. byte[] buf= client.Receive(ref endpoint);//接收数据,把终结点传进来
  42. string mess = Encoding.Default.GetString(buf);
  43. Console.WriteLine(mess);
  44. }
  45. }
  46. }
  47. }

运行打印结果:

六、Tcp与Udp的区别

 TCP是传输控制协议,UDP是用户数据报协议,两者是相对应的协议。

      解释: Tcp是基于连接,Udp是基于非连接。

      使用TCP时在正式收发数据前,必须与对方进行可靠的连接。一个TCP连接必须经过三次对话才能够建立起来,过程比较复杂。

UDP不与对方进行连接而是直接把数据包发送过去。基于这种情况UDP发送数据可能会丢包不安全。

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/114165
推荐阅读
相关标签
  

闽ICP备14008679号