C#中Udp广播的发送与接收(UdpClient)

简介:

  Udp广播消息用在局域网的消息传递很方便。本文使用UdpClient类在WPF下实现Udp广播收发

发送:

 1         void MainWindow_Loaded(object sender, RoutedEventArgs e)
 2         {
 3             Loaded -= MainWindow_Loaded;
 4             UdpClient client = new UdpClient(new IPEndPoint(IPAddress.Any, 0));
 5             IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("255.255.255.255"), 7788);//默认向全世界所有主机发送即可,路由器自动给你过滤,只发给局域网主机
 6             String ip = "host:" + Dns.GetHostEntry(Dns.GetHostName()).AddressList.Last().ToString();//对外广播本机的ip地址
 7             byte[] ipByte = Encoding.UTF8.GetBytes(ip);
 8             DispatcherTimer dt = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(1) };//每隔1秒对外发送一次广播
 9             dt.Tick += delegate
10             {
11                 client.Send(ipByte, ipByte.Length, endpoint);
12             };
13             dt.Start();
14         }

接收:

 1         void MainWindow_Loaded(object sender, RoutedEventArgs e)
 2         {
 3             Loaded -= MainWindow_Loaded;
 4             UdpClient client = new UdpClient(new IPEndPoint(IPAddress.Any, 7788));//端口要与发送端相同
 5             Thread thread = new Thread(receiveUdpMsg);//用线程接收,避免UI卡住
 6             thread.IsBackground = true;
 7             thread.Start(client);
 8         }
 9         void receiveUdpMsg(object obj)
10         {
11             UdpClient client = obj as UdpClient;
12             IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 0);
13             while (true)
14             {
15                 client.BeginReceive(delegate(IAsyncResult result) {
16                     Console.WriteLine(result.AsyncState.ToString());//委托接收消息
17                 }, Encoding.UTF8.GetString(client.Receive(ref endpoint)));
18             }
19         }

效果:

  

时间: 2024-09-30 19:43:12

C#中Udp广播的发送与接收(UdpClient)的相关文章

Udp广播的发送和接收(ios+AsyncUdpSocket)下篇

接上篇C#的Udp广播的发送和接收 http://www.cnblogs.com/JimmyBright/p/4637090.html ios中使用AsyncUdpSocket处理Udp的消息非常方便 准备工作: 在github上找到cocoaAsyncSocket,下载下来,把其中AsyncUdpSocket.h和AsyncUdpSocket.m文件copy到你的项目中,其他文件都不需要.copy到swift环境下会自动提示创建桥接文件,点击确认就可以了. 发送Udp: 上面代码对局域网广播消

udp网络程序-发送、接收数据

1. udp网络程序-发送数据 创建一个基于udp的网络程序流程很简单,具体步骤如下: 创建客户端套接字 发送/接收数据 关闭套接字 代码如下: #coding=utf-8 from socket import * # 1. 创建udp套接字 udp_socket = socket(AF_INET, SOCK_DGRAM) # 2. 准备接收方的地址 # '192.168.1.103'表示目的ip地址 # 8080表示目的端口 dest_addr = ('192.168.1.103', 8080

java下udp的DatagramSocket 发送与接收

发送 package cn.stat.p4.ipdemo; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.InetSocketAddress;

Android深入四大组件(四)广播的注册、发送和接收过程

相关文章 Android深入理解四大组件系列 前言 我们接着来学习Android四大组件中的BroadcastReceiver,广播主要就是分为注册.接收和发送过程.建议阅读此文前请先阅读Android深入理解四大组件系列的文章,知识重复的部分,本文不再赘述. 1.广播的注册过程 BroadcastReceiver的注册分为两种,分别是静态注册和动态注册,静态注册在应用安装时由PackageManagerService来完成注册过程,关于这一过程,我会在后续的介绍PackageManagerSe

Linux系统下UDP发送和接收广播

// 发送端   02.#include 03.#include 04.#include<sys/socket.h>05.#include 06.#include<sys/types.h>07.#include 08.#include<netinet/in.h>09.#include<arpa/inet.h>10.#include 11.   12.   13.using namespace std;   14.   15.int main()   16.{

NetworkComms V3 之发送UDP广播消息

NetworkComms通信框架,是一款来自英国的c#语言编写的通信框架,历时6年研发,成熟稳定,性能可靠. NetworkComms v3目前只支持基本的UDP通信 UDP通信一个很强大的功能,就是UDP广播.允许网络上发送的一个数据包,可以被多个适配器接收.下面的场景中可以考虑使用UDP通信 1:检查哪些网络端点在线 2: 通知网络端点有一个新的服务 3: 传递信息到一组端点上 使用networkComm V3 发送UDP数据包 UDPConnection.SendObject("ChatM

Java UDP数据报发送与接收 学习

java中DatagramPacket表示存放数据的数据报,DatagramSocket表示接受或发送数据报的套接字. 这两个类所有构成的网络链接是基于UDP协议的. import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class Sender { public static void main(String[] args) { try { // 创

简单的广播发送与接收

发送端: public class MainActivity extends Activity { //先在布局文件main.xml中定义一个Button /* * * <Button * android:layout_width="fill_parent" * android:layout_height="wrap_content" * android:text="@string/button_send" * android:id=&qu

数据在网络中的发送和接收过程--简略版(TCP/IP五层结构)

在应用层上设备A想给IP地址为P的设备B发送信息:(假定已知B的IP) 数据信息从应用层而来,在传输层指定特定的端口号,再将这些数据放到TCP报文或者UDP报文内. 若使用UDP,不论从应用层来的数据信息有多大,UDP照单全收,UDP是一次性发送一个完整的报文,同样在接收时也是直接接收整个报文: 若使用TCP,不论从应用层来的数据块有多大,或者有多小,TCP总是把这些数据存着,根据通信对方给出的窗口值和当前网络的拥塞程度判断将合适的数据放到一个TCP报文段中,这些数据段都是有标记的,用于重组时可