Socket编程UDP协议

news/2024/5/18 15:13:56 标签: UDP, Socket

使用Socket 里的Udp协议,SocketType 数据传输方式用Dgram  数据报,使用UDP 通信不需要建立链接 ,只要知道对方的IP 和端口号 即可 。

UDP 即可以作为服务端 也可以作为客服端。

 static Socket UDPSocket;
        static void Main(string[] args)
        {
            //1 创建 socket
            UDPSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            //2 绑定 端口号
            EndPoint endPoint = new IPEndPoint(IPAddress.Parse("172.17.144.3"), 7788);
            UDPSocket.Bind(endPoint);


            Thread t = new Thread(ReceiveMsg);
            t.IsBackground = true;
            t.Start();
        }
        static void ReceiveMsg()
        {
            
            byte[] data = new byte[1024];
            EndPoint point = new IPEndPoint(IPAddress.Any, 0);
            while (true)
            { 
                int length = UDPSocket.ReceiveFrom(data, ref point);

                string mes = Encoding.UTF8.GetString(data, 0, length);

                Console.WriteLine("服务器从" + ((IPEndPoint)point).Address + "端口:" + ((IPEndPoint)point).Port + "收到了消息:" + mes);
            }
        }

 UDPSocket.ReceiveFrom()   会停止  直到 收到了数据

SendTo  发给指定的 IP

        static void Main(string[] args)
        {
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            EndPoint endPoint = new IPEndPoint(IPAddress.Parse("172.17.144.3"), 7788);
            while (true)
            { 
                string mes = Console.ReadLine();
                
                socket.SendTo(Encoding.UTF8.GetBytes(mes),endPoint);
            }
        }

SendTo方法

 

 

UDP 面向无连接 丢包率高  系统资源要求低  快

TCP 面向链接 丢包率低   系统资源要求高 稳  三次握手  易被攻击 

https://www.cnblogs.com/xiaomayizoe/p/5258754.html TCP 和UDP的区别

TCP与UDP区别总结:

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的

UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

5、TCP首部开销20字节;UDP的首部开销小,只有8个字节

6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道


http://www.niftyadmin.cn/n/770131.html

相关文章

TcpListenerUDPListener

TcpListener UDPListener 他们都在TCP UDP基础上的一层封装,封装了Socket 服务端: static void Main(string[] args){//1.创建TcpListener 里面包含Socker对象TcpListener tcpListener new TcpListener(IPAddress.Parse("172.17.144.3"), 7…

Unity获取 鼠标 插值的 几种 方法

说说思路实现 Unity中获取 鼠标插值的原理是  用上一帧鼠标的位置 减去这一帧的鼠标位置的值,然后要进行对第一次进行判断,判断这一次位置是不是原来的值,如果不是就进行差 运算,得出偏移量。再把上一次的位置的值给这个一次…

梦想与远方

对于近期生活的一些思考,我发现,到了工作的地方后,工作了几个星期,很快就适应 了节奏,不知道是因为项目刚刚立项的原因,还是因为别的,发现自己开始变得懒惰了,这样可不行&#xff0c…

编辑器扩展AssetModificationProcessor 脚本模板功能

AssetModificationProcessor、 在编辑模式下可以让你的Unity资源 保存序列化 前 勾住它, 防止Unity 在写入资源 提前把它锁住,对它进行处理 Unity Editor下对资源进行操作时调用AssetModificationProcessor . Leave feedback Description AssetMo…

GitHub的使用记录

官方导读 Github Hello World(教你如何新建仓库,和project 分支管理) 1.注册GitHub账号 2.下载安装Git for Windows 3. 配置Git 4. 连接GitHub 此处默认你已经 注册好了账号。 下载安装Git for Windows 傻瓜式的安装 一路next接着打…

最近在做个一编辑器扩展的打包工具记录分享下

Github地址:最近才开的https://github.com/qq21/EditorExtendLearning.git

转:从Thread的线程单元状态ApartmentState说起

System.Threading命名空间是.Net多线程编程的基础。对于多线程编程在实际工作中一直用的不多,所以了解也就不多。尽管如此,随着多核,多个cpu的出现,大计算量的需要,多线程将越来越受关注。所以打算写个系列博客&#x…

Lua学习记录__Lua中的坑

Lua中的坑——学习记录1.运算符1.1.逻辑运算符1.11. and or not 运算符1.2.其他运算符1.21. #运算符情况1情况2情况3情况4总结1.运算符 1.1.逻辑运算符 1.11. and or not 运算符 逻辑运算符认为false和nil 都是假(flase)的,其他为真,0也是true and 和…