文章中的StriveEngine.dll版本为V3.9.0.0,源码下载请到 这里
UDP比TCP通信,就相对简单多了
先上代码,建立2个控制台程序,分别为SEUDP1,SEUDP2,其中SEUDP1中增加一个类

 class UDP
    {
        private IUdpEngine udpServerEngine;
        public UDP(int port)
        {
            this.udpServerEngine = NetworkEngineFactory.CreateUdpEngine();
            this.udpServerEngine.Port = port;

           this.udpServerEngine.LogFilePath = @"C:\";
            this.udpServerEngine.MessageReceived += udpServerEngine_MessageReceived;
        }

        private void udpServerEngine_MessageReceived(IPEndPoint obj1, byte[] obj2)
        {
            string msg = System.Text.Encoding.UTF8.GetString(obj2);
            Console.WriteLine("Get message from [{0}]:{1}", obj1.ToString(), msg);
        }

        public void Start()
        {
            this.udpServerEngine.Initialize();
        }

        public void Send(string ip, int port, byte[] msg)
        {
            IPEndPoint iep = new IPEndPoint(IPAddress.Parse(ip), port);
           this. udpServerEngine.SendMessage(iep, msg);
        }

        public void Send(string ip, int port, string msg)
        {
            byte[] bs = System.Text.Encoding.UTF8.GetBytes(msg);
            this.Send(ip, port, bs);
        }
    }

同时,在SEUPD2中增加这个类的链接,然后就都可以使用了

SEUPD1中的Main函数

 static void Main(string[] args)
        {
            UDP sender = );
            sender.Start();
            while (true)
            {
                string msg = Console.ReadLine();
                sender.Send(, msg);
            }

        }

SEUPD2中的Main函数

 static void Main(string[] args)
        {
            UDP sender = );
            sender.Start();
            while (true)
            {
                string msg = Console.ReadLine();
                sender.Send(, msg);
            }
        }

启动SEUPD1和SEUDP2,在控制台敲任意字符,都能发送到对方,并且打印出来.

注意:

  • UDP是没有客户端和服务端之分的,这一点和tcp的区别最明显
  • 对报文没有那么多控制,(我说的控制,不是因为我没定义报文类,)
  • 非面向连接,发送就完成,不管身后事

StriveEngine-UDP的更多相关文章

  1. 轻量级通信引擎StriveEngine —— C/S通信demo(附源码)

    前段时间,有几个研究ESFramework的朋友对我说,ESFramework有点庞大,对于他们目前的项目来说有点“杀鸡用牛刀”的意思,因为他们的项目不需要文件传送.不需要P2P.不存在好友关系.也不 ...

  2. 轻量级通信引擎StriveEngine —— C/S通信demo(2) —— 使用二进制协议 (附源码)

    在网络上,交互的双方基于TCP或UDP进行通信,通信协议的格式通常分为两类:文本消息.二进制消息. 文本协议相对简单,通常使用一个特殊的标记符作为一个消息的结束. 二进制协议,通常是由消息头(Head ...

  3. 轻量级C#网络通信组件StriveEngine —— C/S通信开源demo(附源码)

    前段时间,有几个研究ESFramework网络通讯框架的朋友对我说,ESFramework有点庞大,对于他们目前的项目来说有点“杀鸡用牛刀”的意思,因为他们的项目不需要文件传送.不需要P2P.不存在好 ...

  4. C#轻量级通通讯组件StriveEngine —— C/S通信开源demo(2) —— 使用二进制协议 (附源码)

    前段时间,有几个研究ESFramework通信框架的朋友对我说,ESFramework有点庞大,对于他们目前的项目来说有点“杀鸡用牛刀”的意思,因为他们的项目不需要文件传送.不需要P2P.不存在好友关 ...

  5. Node.js:dgram模块实现UDP通信

    1.什么是UDP? 这里简单介绍下,UDP,即用户数据报协议,一种面向无连接的传输层协议,提供不可靠的消息传送服务.UDP协议使用端口号为不同的应用保留其各自的数据传输通道,这一点非常重要.与TCP相 ...

  6. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

  7. TODO:Golang语言TCP/UDP协议重用地址端口

    TODO:Golang语言TCP/UDP协议重用地址端口 这是一个简单的包来解决重用地址的问题. go net包(据我所知)不允许设置套接字选项. 这在尝试进行TCP NAT时尤其成问题,其需要在同一 ...

  8. 利用Docker技术实现UDP广播效果(网络编程python版)

    docker的安装见官方文档 我使用的系统为Ubuntu16.04 Ubuntu系统安装docker文档地址:https://docs.docker.com/engine/installation/l ...

  9. 【Win 10 应用开发】UDP广播

    我们知道,对于UDP协议的通信,除了可以用来聊天外,可以发送广播数据.只要向广播地址的某个端口发送数据就可以进行广播,子网中只要监听该端口的socket就能收到广播消息. 最简单的方法就是向255.2 ...

  10. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.2

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

随机推荐

  1. docker下安装tensorflow

    一,查找镜像 root@xushi:~# docker search tensorflow NAME DESCRIPTION STARS OFFICIAL AUTOMATED tensorflow/t ...

  2. firefox 之 event兼容写法

    event 在 IE 和 FF(Firefox) 中是不兼容的,IE 中可以直接使用 event 对象,而 FF 中则不可以,解决方法之一如下: var event = window.event || ...

  3. js 正则表达式,匹配邮箱/手机号/用户名

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. 【转】VxWorks中高精度实时时钟的实现及C语言汇编混合编程

    最近一个项目中需要在VxWorks下使用一个高精度实时时钟,要求精度为1ms,溢 出时间大于5小时.VxWorks提供系统时钟,该时钟在操作系统启动后开始计数,精度为1个tick,可以通过tickGe ...

  5. keybd_event使用方法

    Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作.Keybd_event()函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM ...

  6. Mac版Java安装与配置

    一.下载并安装JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 双击下载的 ...

  7. linux安装dpkg安装缺少依赖项的解决

    问题: dpkg: error processing package rxvt:i386 (--install): dependency problems - leaving unconfigured ...

  8. Hibernate 的缓存

    Hibernate的一级缓存 什么是缓存?? 1 数据存到数据库里面,数据库本身是文件系统,使用流方式操作文件效率不是很高.   1.1 把数据存到内存里面,不需要使用流方式,可以直接读取内存中数据 ...

  9. Conda下安装libsvm

    如何在canda下安装libsvm? 版本:Python是2.7 canda2 首先想到的是去Python官网上找libsvm的包,结果并没有. 这是因为libsvm是c语言编写的并不是一个Pytho ...

  10. pipenv知识积累

    pip install pipenv 安装pipenv pipenv --python 3.6 指定某一Python版本创建环境 pipenv --py 显示Python解释器信息 pipenv -- ...