上一篇有说到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"), );
_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, );
//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"), );
byte[] buf = Encoding.Default.GetBytes(msg);
_udpc.Send(buf, buf.Length, servipdt);
} }
}

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

UDP通讯的更多相关文章

  1. UDP通讯程序设计

    UDP通讯程序设计 一.函数化 1.1服务器使用的函数 创建socket----->socket 绑定地址-------->bind 接受数据-------->recvfrom 发送 ...

  2. C#中的TCP通讯与UDP通讯

    最近做了一个项目,主要是给Unity3D和实时数据库做通讯接口.虽然方案一直在变:从开始的UDP通讯变为TCP通讯,然后再变化为UDP通讯;然后通讯的对象又发生改变,由与数据库的驱动进行通讯(主动推送 ...

  3. LWIP裸机环境下实现TCP与UDP通讯

    前面移植了LWIP,并且简单的实用了DHCP的功能,今天来使用一下实际的数据通讯的功能 首先是实现TCP客户端,我先上代码 #ifndef __TCP_CLIENT_H_ #define __TCP_ ...

  4. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  5. LWIP裸机环境下实现TCP与UDP通讯(转)

    源: LWIP裸机环境下实现TCP与UDP通讯

  6. java基础55 UDP通讯协议和TCP通讯协议

    本文知识点(目录): 1.概述    2.UDP通讯协议    3.TCPP通讯协议 1.概述 1.在java中网络通讯作为Socket(插座)通讯,要求两台都必须安装socket.    2.不同的 ...

  7. QUdpSocket-Qt使用Udp通讯实现服务端和客户端

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QUdpSocket-Qt使用Udp通讯实现服务端和客户端     本文地址:https:// ...

  8. UDP通讯模型简单示例

    1. UDP通讯模型 2. 服务器端 ① 创建一个socket,用函数socket() ② 绑定IP地址.端口等信息到socket上,用函数bind() ③ 循环接收数据,用函数recvfrom() ...

  9. python网络编程:socket半连接池、UDP通讯模板

    一.TCP半连接池原理 二.UDP通讯 三.UDP聊天 四.UDP聊天2 五.UDP会粘包吗 六.UDP总结 七.UDP与TCP对比 一.TCP半连接池原理 客户端 import socket cli ...

随机推荐

  1. WPF MVVM

    MVVM全称:Model-View-ViewModel 优点:MVVM的引入使程序实现了松耦合设计,UI层与业务逻辑可以并行设计 1.Model:对现实世界的抽象 比如:需要做一个学校的管理系统,学校 ...

  2. 史上最全的Maven Pom文件标签详解

    <span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...

  3. jQuery load() 判断 iframe 是否加载完毕

    判断 iframe 是否加载完毕  方法.jQuery load() var frm = document.getElementById('myiframe'); $(frm).load(functi ...

  4. window 10 javac不是内部或外部命令

    今天在新电脑上配置Java环境变量(window 10),不管怎么配置都是提示“javac不是内部或外部命令”,java,java -version命令是正常的. 后来发现是path路径配置的不对,修 ...

  5. ansible 使用

    批量添加ssh免密 ansible mhc -m authorized_key -a "user=root key='{{ lookup('file','/root/.ssh/id_dsa. ...

  6. 并发包下常见的同步工具类详解(CountDownLatch,CyclicBarrier,Semaphore)

    目录 1. 前言 2. 闭锁CountDownLatch 2.1 CountDownLatch功能简介 2.2 使用CountDownLatch 2.3 CountDownLatch原理浅析 3.循环 ...

  7. 关于scanf的算法(位操作)

    题目要求:输入有12行数据,每一行分别是每个月的余额.计算他们的平均值后输出.在输出时要在前面加上“$”,并在四舍五入后保留小数点后两位. 方法1: float a,b; main() { ;) b+ ...

  8. leetcode 63 不同的路径2

    描述: 从左上角走到右下角,中间可能有若干阻碍: 题目给出一个矩阵,0表示可以走,1表示有障碍. 解决: 思路同第一题,只是如果上面或左边有障碍,自身不一定能走,注意些边界条件即可,复杂度仍是m*n. ...

  9. learning.py报错

    在廖雪峰大神的网站下学习了Python,其中有一个提供互动环境的Python脚本--learning.py,报了个错,看了下源文件的代码,安排了一下. 报错信息: This learning.py i ...

  10. Eclipse 安装PyDev开发Python及初步使用

    Eclipse 安装PyDev插件后可开发Python 参考网址:https://blog.csdn.net/wscdylzjy/article/details/44066977 具体请参考上述网址, ...