上一篇有说到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. 项目管理工具maven(一)

    1 Maven的概述 1.1 依赖管理 就是对jar包的统一管理  可以节省空间 1.2 项目一键构建 编码  编译  测试(junit)  运行  打包  部署 一个 tomcat:run就能把项目 ...

  2. Rhythmk 一步一步学 JAVA (18): Enum枚举学习

    枚举定义: public enum SizeEnum { SMALL, BIG, BIGEST }; public enum SizeStringEnum { SMALL("小") ...

  3. 42.国际化-配置package的资源文件

    转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 同样在建立com.asm包下建立两个资源文件(package级别的资源文件名 ...

  4. ubuntu server 安装nextcloud12

    1.更新系统安装必要的依赖包 [user]$ sudo apt-get update && sudo apt-get -y upgrade [user]$ sudo apt-get i ...

  5. context和aop

    context可以看作是模切关注点,通过给join point(即被织入的业务)标记自定义属性(point cut,继承自ContextAttribute),可以得到context,然后advice具 ...

  6. sed的基础应用

    sed是一个非交互式的文本编辑器:sed一行一行的处理文件 sed有模式空间(主要活动空间)和缓存空间(辅助空间)两个空间: 模式空间(pattern space)将文件中的一行内容读取到临时缓冲区( ...

  7. Ubuntu开机自动挂载分区

    虽然我基本上都是使用Linux的,但是仍然有些时候需要切换到Windows(双系统),如果所有的分区都使用ext4等Linux分区格式,则在Windows下访问十分不方便. 因此,我一般会将一些两个系 ...

  8. sqlserver备份与还原

    备份:数据库右键 默认: 还原成功: 还原: 1,新建同名数据库,右键 下步一定要,不然会报“备份集中的数据库备份与现有的数据库不同” 还原成功后

  9. 28-python 中格式对齐之中文格式对齐问题

    一般的可以按这个搞,但是中文就会有问题: python基础_格式化输出(%用法和format用法) 对于 print('1234567890' * 10)print('%10s' % '今天好')pr ...

  10. android studio升级方法

    android studio 更新问题: 如果被墙则采用以下步骤: 一:看版本 help-->about    AI***************** 二:查看android studio最新版 ...