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

一、什么是TCP

 

二、 Tcp的连接和断开 

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

四、TCP编码部分 

      4.1   TcpListener (服务端) 

using System.Net.Sockets;
using System.Net;
using System.Reflection;

namespace ConsoleApplication1
{
     class Program
    {
        //创建服务器端,监听客户端
        public static void Main(string[] args)

        {
            IPAddress ip = IPAddress.Parse("127.0.0.1");
            int port = 5566;
            TcpListener   sever=new TcpListener(ip,port);
            sever.Start();//开启之后才能执行下面的监听
            sever.AcceptTcpClient();//监听客户端的连接

        }
    }
}

    4.2    TCPClient(客户端)

using System.Net.Sockets;
using System.Net;
using System.Reflection;

namespace ConsoleApplication1
{
     class Program
    {
        //创建客户端,连接服务器,读取写入数据
        public static void Main(string[] args)

        {
            IPAddress ip = IPAddress.Parse("127.0.0.1");
            int port = 5566;
            TcpClient client=new TcpClient();
            client.Connect(ip,port);//客户端连接服务器端
       //当服务器端与客户端连接上之后,就该获取两个计算机之间传递的数据,
           // NetworkStream stream = client.GetStream();
            //发送和接收都会用到数据流
          //  stream.Read();
           // stream.Write();
            // client.GetStream();// 可以从数据流中获取.获取数据流的方法,
        }
    }
}

五、 UDP协议

UDP协议不分服务器与客户端的区别,它并不是由一台机器向一台主机器传,UDP先是以数据报的模式扔到网上,自己去下载就可以了,所以UDP协议接收与发送都是Client。如下所示:
using System;
using System.Net.Sockets;
using System.Net;
using System.Reflection;
using System.Text;
using System.Threading;

namespace ConsoleApplication1
{
     class Program
    {
        public static void Main(string[] args)

        {
            UDPtest.Start();
        }
    }

     class UDPtest
     {
         //一个类中既要收又要发数据的话需要线程来辅助,不然会堵塞
         public static void Start()
         {
             
             UdpClient client=new UdpClient(new IPEndPoint(IPAddress.Any,0));
         
             IPEndPoint endpoint=new IPEndPoint(IPAddress.Parse("255.255.255.255"),7788);
             //服务端把一句话发送给客户端
            byte[] buf= Encoding.Default.GetBytes("Hello world"); //字符串进行转化成想要的字节流
           
            Thread tr=new Thread( new ThreadStart(Receive));//开启线程调用另一个协程

            tr.IsBackground = true;//确保开启的线程是主线程
            tr.Start();

            while (true)//循环,连着发送数据
            {
                
                client.Send(buf, buf.Length, endpoint);//向谁发送多长的字节
                Thread.Sleep(1000);//每隔一秒休眠一下
                
            }
            
         
         }
      //接收数据
         static void Receive()
         {
             UdpClient client=new UdpClient(new IPEndPoint(IPAddress.Any,7788));
         
             IPEndPoint endpoint=new IPEndPoint(IPAddress.Parse("255.255.255.255"),0);
             while (true)//因为是循环发送,我们就循环接收
             {
                
                byte[] buf= client.Receive(ref endpoint);//接收数据,把终结点传进来

                string mess = Encoding.Default.GetString(buf);
                Console.WriteLine(mess);
             }
         }

        

     }


}

运行打印结果:

六、Tcp与Udp的区别

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

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

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

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

 

 

 

Unity是一款跨平台的游戏引擎,它可以用于开发游戏应用程序。在Unity中,可以使用TCPUDP协议进行网络通信TCPUDP是用于通过Internet发送信息的两种协议TCP(传输控制协议)是一种可靠的协议,它通过建立连接、数据分段、校验和等机制,确保数据正确地从发送端传输到接收端。而UDP(用户数据报协议)是一种不可靠的协议,它没有建立连接的过程,数据被分割成数据报并发送出去,但不保证接收端能够正确接收所有数据。 在Unity中,可以使用Socket接口来实现TCPUDP的通信。Socket接口是TCP/IP网络的API,它定义了许多函数或例程,用于开发TCP/IP网络上的应用程序。通过使用Socket接口,可以在Unity中实现TCPUDP的服务端和客户端。 要在Unity中实现TCP服务端,可以使用Socket类的相关方法来监听客户端的连接,并接收和发送数据。具体的实现可以参考引用中的内容。 要在Unity中实现TCP客户端,可以使用Socket类的相关方法来连接服务端,并发送和接收数据。具体的实现可以参考引用中的内容。 要在Unity中实现UDP服务端,可以使用Socket类的相关方法来接收和发送数据报。具体的实现可以参考引用中的内容。 要在Unity中实现UDP客户端,可以使用Socket类的相关方法来发送和接收数据报。具体的实现可以参考引用中的内容。 综上所述,Unity可以通过使用Socket接口来实现TCPUDP的通信,具体的实现可以参考引用中的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值