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"), );
_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通讯的更多相关文章
- UDP通讯程序设计
UDP通讯程序设计 一.函数化 1.1服务器使用的函数 创建socket----->socket 绑定地址-------->bind 接受数据-------->recvfrom 发送 ...
- C#中的TCP通讯与UDP通讯
最近做了一个项目,主要是给Unity3D和实时数据库做通讯接口.虽然方案一直在变:从开始的UDP通讯变为TCP通讯,然后再变化为UDP通讯;然后通讯的对象又发生改变,由与数据库的驱动进行通讯(主动推送 ...
- LWIP裸机环境下实现TCP与UDP通讯
前面移植了LWIP,并且简单的实用了DHCP的功能,今天来使用一下实际的数据通讯的功能 首先是实现TCP客户端,我先上代码 #ifndef __TCP_CLIENT_H_ #define __TCP_ ...
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...
- LWIP裸机环境下实现TCP与UDP通讯(转)
源: LWIP裸机环境下实现TCP与UDP通讯
- java基础55 UDP通讯协议和TCP通讯协议
本文知识点(目录): 1.概述 2.UDP通讯协议 3.TCPP通讯协议 1.概述 1.在java中网络通讯作为Socket(插座)通讯,要求两台都必须安装socket. 2.不同的 ...
- QUdpSocket-Qt使用Udp通讯实现服务端和客户端
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QUdpSocket-Qt使用Udp通讯实现服务端和客户端 本文地址:https:// ...
- UDP通讯模型简单示例
1. UDP通讯模型 2. 服务器端 ① 创建一个socket,用函数socket() ② 绑定IP地址.端口等信息到socket上,用函数bind() ③ 循环接收数据,用函数recvfrom() ...
- python网络编程:socket半连接池、UDP通讯模板
一.TCP半连接池原理 二.UDP通讯 三.UDP聊天 四.UDP聊天2 五.UDP会粘包吗 六.UDP总结 七.UDP与TCP对比 一.TCP半连接池原理 客户端 import socket cli ...
随机推荐
- SpringBoot2.0实现静态资源版本控制
写在最前面 犹记毕业第一年时,公司每次发布完成后,都会在一个群里通知[版本更新,各部门清理缓存,有问题及时反馈]之类的话.归根结底就是资源缓存的问题,浏览器会将请求到的静态资源,如JS.CSS等文件缓 ...
- pandas的数据结构
要使用pandas,需要熟悉它的两个主要的数据结构,Series和DataFrame. Series series是一种类似于以为数组的对象,它由一组数据(各种numpy的数据类型)以及一组与之相关的 ...
- Selenium Webdriver——AutoIt和robot实现右键另存
方案如下: 1.selenium 弹出右键菜单 2.robot选择相关菜单 3.调用autoIt实现windows gui另存操作 test case 如下: 1.打开百度(谷歌浏览器) 2.选择百度 ...
- python 2.7中安装mysql
在python中进行安装mysql模块,但是怎么都不能导入mysql模块,出错如下所示: [root@python ~]# python Python 2.7.11 (default, Apr 5 2 ...
- 跟我学算法-match-LSTM(向唐老师看齐)
对于match-lstm,将hi文本与输出的match-lstm(由si,hi,qi)组合重新输入到LSTM网络中,以端对端的操作理念. 参考的博客:https://blog.csdn.net/lad ...
- 25.Reverse Nodes in k-Group (List)
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. If ...
- NoClassDefFoundError: net/sf/ezmorph/Morpher
使用import net.sf.json.JSONObject; json-lib-2.4-jdk15.jar时报这个错,各种查找,受到https://blog.csdn.net/chenleixin ...
- 拒绝用户登录:/bin/false和/usr/sbin/nologin
要拒绝系统用户登录,可以将其shell设置为/usr/sbin/nologin或者/bin/false 1 # usermod -s | --shell /usr/sbin/nologin usern ...
- TASK FLOW中的REENTRY
在实际应用中,用户可能会点击浏览器的回退按钮回到上一页面,在有些情况下会导致一些问题. ADF Bounded TaskFlow有一个选项(UnBounded TaskFlow无此选项)可以设置是否允 ...
- C语言字符编码处理
一.字符编码识别 1.简介 uchardet是一个开源的用于文本编码检测的C语言库,其功能模块是用C++实现的,通过一定数量的字符样本独立的分析出文本的编码,当前已经支持UTF-8/GB13080/B ...