• UDP通讯


    上一篇有说到TCP通讯,这篇来谈谈UDP通讯方式

    基于Udp协议是无连接模式通讯,占用资源少,响应速度快,延时低。至于可靠性,可通过应用层的控制来满足。(不可靠连接)

    (1).建立一个套接字(Socket)

    (2).绑定服务器端IP地址及端口号--服务器端

    (3).通过SendTo()方法向指定主机发送消息(需提供主机IP地址及端口)

    (4).通过ReciveFrom()方法接收指定主机发送的消息(需提供主机IP地址及端口)

    UDP通讯方式:建立Socket、绑定IP与端口、发送/接收、结束;

    通讯实例

    UDP服务器端

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
    using System.Threading;
    
    namespace TcpServerConsoleApp
    {
        public class UdpServerApp
        {
            UdpClient _udpc;//UDP客服端
            public IPEndPoint _Ipdp;
            
            public UdpServerApp()
            {
                _Ipdp = new IPEndPoint(IPAddress.Parse("192.168.1.142"), 9005);
                _udpc = new UdpClient(_Ipdp);
                Thread clientThread = new Thread(ReciveFunc);
                clientThread.Start();
    
            }
    
            private void ReciveFunc()
            {
                //_Ipdp = new IPEndPoint(IPAddress.Any, 0);
                //Console.WriteLine("接入客服端:{0}  {1}", _Ipdp.Address.ToString(), _Ipdp.Port.ToString());
                while (true)
                {
                    try
                    {
                        byte[] buffer = _udpc.Receive(ref _Ipdp);
    
                        Console.WriteLine("接收信息:{0}", Encoding.Default.GetString(buffer));
                    }
                    catch
                    { }
                }
            }
    
            public void Sendmsg(string msg)
            {
                byte[] buf = Encoding.Default.GetBytes(msg);
                _udpc.Send(buf, buf.Length, _Ipdp);
            }
    
        }
    }

    DUP客服端

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
    using System.Threading;
    
    
    namespace TcpClientConsolApp
    {
        public class UdpClientApp
        {
            UdpClient _udpc;//UDP客服端
          
            
    
    
            public UdpClientApp()
            {
                _udpc = new UdpClient();
                Thread clientThread = new Thread(ReciveFunc);
                clientThread.Start();
            
            }
    
            private void ReciveFunc()
            {
                 IPEndPoint _Ipdp = new IPEndPoint(IPAddress.Any, 0);
                //Console.WriteLine("接入客服端:{0}  {1}", _Ipdp.Address.ToString(), _Ipdp.Port.ToString());
                while (true)
                {
                    try
                    {
                        byte[] buffer = _udpc.Receive(ref _Ipdp);
    
                        Console.WriteLine("接收信息:{0}", Encoding.Default.GetString(buffer));
                    }
                    catch
                    { }
                }
            }
    
            public void Sendmsg(string msg)
            {
                IPEndPoint servipdt = new IPEndPoint(IPAddress.Parse("192.168.1.142"), 9005);
                byte[] buf = Encoding.Default.GetBytes(msg);
                _udpc.Send(buf, buf.Length, servipdt);
            }
    
        }
    }

    从上面对比可以看出服务端与客服端的代码大致相同。

  • 相关阅读:
    JQuery+Ajax+Ashx+Base64 data无法传递的问题
    用户 'IIS APPPOOL\DefaultAppPool' 登录失败。 的解决方案
    CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\4b49f661\23a749fc\App_Web_default.aspx.cdcab7d2.zii776dc.dl
    SQL 按月统计
    591  Box of Bricks
    10038 Jolly Jumpers
    113 Power of Cryptography
    10370 Above Average
    10189 Minesweeper
    136 Ugly Numbers 之“堆”的解法
  • 原文地址:https://www.cnblogs.com/wangyonglai/p/8257883.html
Copyright © 2020-2023  润新知