因为UDP是无连接的,无需建立连接,就可以收发数据。使用Sokit 工具测试编写的代码是否正常工作。

开启UDP侦听IP和端口,编写代码实现数据收发,服务端如下:

编写简易代码UI如下:

向IP 127.0.0.1,9902 端口发送数据,测试发送数据OK

测试接收服务端发送的数据OK

1. UI设计

<Window x:Class="Udp_Test1.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:Udp\_Test1"mc:Ignorable="d"Loaded="Window_Loaded"Title="UDP Test1" Height="450" Width="500"><Window.Resources><Style TargetType="TextBlock"><Setter Property="Margin" Value="3"/><Setter Property="Padding" Value="2"/></Style><Style TargetType="TextBox"><Setter Property="Margin" Value="3"/><Setter Property="VerticalAlignment" Value="Center"/></Style></Window.Resources><Grid><Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions><Grid Grid.Row="0" Margin="3"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/><ColumnDefinition Width="Auto"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><TextBlock Grid.Column="0" >服务器IP地址:</TextBlock><TextBox Grid.Column="1" x:Name="txtServerIP" >127.0.0.1</TextBox><TextBlock Grid.Column="2" >服务器端口:</TextBlock><TextBox Grid.Column="3" x:Name="txtServerPort" >9902</TextBox></Grid><DockPanel Grid.Row="1" Margin="3"><TextBlock DockPanel.Dock="Left">发送数据:</TextBlock><Button DockPanel.Dock="Right" x:Name="btnSendData" Click="btnSendData_Click" Margin="3" VerticalAlignment="Center">发送数据</Button><TextBox x:Name="txtSendData"></TextBox></DockPanel><TextBlock Grid.Row="2">接收到服务器发来的数据:</TextBlock><TextBox x:Name="txtRecivedMessage" Grid.Row="3" TextWrapping="Wrap" Margin="5" VerticalAlignment="Stretch" VerticalScrollBarVisibility="Visible"></TextBox></Grid></Window>

2. 代码设计

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Net;
using System.Net.Sockets;
using System.Threading;namespace Udp_Test1
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{static Socket client;public MainWindow(){InitializeComponent();}private void Window_Loaded(object sender, RoutedEventArgs e){client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);client.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9901));//接收发送给本机ip对应端口号的数据报Task.Run(async() =>{while(true){EndPoint point = new IPEndPoint(IPAddress.Any, 0);//用来保存发送方的ip和端口号byte[] buffer = new byte[1024];int length = client.ReceiveFrom(buffer, ref point);//接收数据报string message = Encoding.UTF8.GetString(buffer, 0, length);await this.txtRecivedMessage.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(() =>{txtRecivedMessage.AppendText("Sever (" + point.ToString() + ") :" +message + "\r\\n");}));}});}private void btnSendData_Click(object sender, RoutedEventArgs e){//向特定IP的主机的端口发送数据--ServerIP,Port//EndPoint point = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9902);EndPoint point = new IPEndPoint(IPAddress.Parse(txtServerIP.Text), int.Parse(txtServerPort.Text));client.SendTo(Encoding.UTF8.GetBytes(txtSendData.Text), point);}}}

简单的实现了UDP数据的收发。

C# UDP实现数据收发相关推荐

  1. 网络是怎样连接的-UDP协议的收发操作

    2.6 UDP 协议的收发操作 2.6.1 不需要重发的数据用 UDP 发送更高效 大多数的应用程序都像之前介绍的一样使用 TCP 协议来收发数据,但当然也有例外. 有些应用程序不使用 TCP 协议, ...

  2. UDP协议的收发操作

    大多数的应用程序都像之前介绍的一样使用TCP协议来收发数据,但当然也有例外.有些应用程序不使用TCP协议,而是使用UDP协议来收发数据.向DNS服务器查询IP地址的时候我们用的也是UDP协议.下面就简 ...

  3. 千兆以太网PHY芯片调试-88E1111(RGMII接口-数据收发ECHO测试) Verilog实现python测试

    千兆以太网PHY芯片调试-基于RGMII接口的88E1111(数据收发ECHO测试) 先放结果: Py测试代码: import socket #网络通信 TCP,UDP DST_IP = '192.1 ...

  4. 【stm32f429igt6】的WiFi模块数据收发。

    [stm32f429igt6]的WiFi模块数据收发. 主要模块:串口7 .串口3 esp8266 stm429igt6.网络调试助手.串口助手. 对上图的个人理解哈! 1:u3和WiFi是一对情侣 ...

  5. Python的UDP通讯(收发一体、多线程)

    想着自己做一个上位机,用labview的话还要装软件和驱动,用python装一个解释器就ok了比较省事,这个只是个dome!刚学python三个小时!若有错误请见谅,请指导,谢谢!代码如下! impo ...

  6. moxa Nport配置tcp/udp实现数据发送和回传(补充数据接收错乱处理方法)

    moxa Nport配置tcp/udp实现数据发送和回传–记一次吐血经历 目的 现有一内网环境需要连外网进行钉钉推送,开始使用串口连接实体电脑的方式实现,现需要撤除实体电脑,故选用串口服务器的方式实现 ...

  7. Linux: 网络数据收发流程简析

    文章目录 1. 前言 2. 背景 3. 网卡数据收发流程 3.1 网络数据接收流程 3.1.1 网卡数据接收流程 3.1.2 网卡数据向上传递给L3,L4的流程 3.2 网卡数据发送流程 1. 前言 ...

  8. STM32CubeMX+STM32F407+FreeRTos+LAN8720 以太网通信实现数据收发功能

    目录 前言 一.STM32CubeMX配置 二.修改代码 三.硬件测试 总结 前言 该工程应用的以太网芯片是LAN8720,代码是基于STM32CUbeMx6.2.1配置生成的,在CubeMx中配置了 ...

  9. 通过 UDP 发送数据的简单范例

    package j2se.core.net.udp; import java.io.IOException; import java.net.DatagramPacket; import java.n ...

最新文章

  1. 集成Netty|tensorflow实现 聊天AI--PigPig养成记(2)
  2. 项目2---机柜和物理服务器
  3. 计算机 专业英语 考试,《计算机专业英语》期末考试试卷
  4. Microsoft SQL Server中的事务(转载)
  5. spark集群启动正常,但是提交任务后只有一个节点(slave/worker)参与集群计算
  6. 服务器可以装2个系统吗,云服务器可以装多个系统吗
  7. 常见问题_轴承零件加工常见问题?
  8. 行内块元素(HTML、CSS)
  9. iPad和iPhone上的应用程序图标
  10. 2019人工智能写作软件
  11. [原创]Android秒杀倒计时自定义TextView
  12. Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
  13. 米游社-原神每日签到含DS算法
  14. 专升本英语——应试题型突破——翻译——固定搭配【学习笔记】
  15. iOS从相册选择视频和保存视频到相册
  16. AndroidStudio无法识别字体文件(*.ttf)问题的解决
  17. 科普达人丨漫画图解什么是eRDMA?
  18. [DR吐槽]——三大卡牌链游到底都是什么货色?
  19. Office 2019 激活-探索(仅供参考)
  20. [Nvidia Jetson ]设备-Nvidia Jetson Nano刷机安装EMMC镜像(不使用sdkmanager工具)

热门文章

  1. 复数辐角主值个人理解
  2. 四次方程根式解+四次以上方程近似解的js实现代码(上)——复数类+复数常量+三角函数简表
  3. go配置sublime text时使用MarGo报错及解决方法
  4. 分布式链路追踪在字节跳动的实践
  5. CSDN技术主题月:实战解读移动信息安全技术
  6. 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备
  7. 年会邀请函如何制作?教你一分钟快速制作年会邀请函
  8. RabbitMQ详解及其特性
  9. MySQL——我的学习笔记
  10. mct接收_Android实现文件上传功能(接收端用strust2)