zoukankan      html  css  js  c++  java
  • 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);
            }
    
        }
    }

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

  • 相关阅读:
    网上邻居无法打开的问题 客户端无法连接打印机问题
    今天一天下午到晚上都在研究如何刷手机,要是被领导知道我帮同学在刷手机系统,非开除我不可。还是贴出来,以后少走弯路吧
    “屏幕保护程序”没有出现“在恢复时使用密码保护”的解决方法
    NOD 32客户端安装时出现的问题
    [模板]二叉树的前、中、后序遍历
    [算法]浅谈求n范围以内的质数(素数)
    [模板]二叉搜索树
    [OI]Noip 2018 题解&总结(普及)
    Centos7.2安装git(源码安装)
    Centos7.2安装maven
  • 原文地址:https://www.cnblogs.com/wangyonglai/p/8257883.html
Copyright © 2011-2022 走看看