UDP数据传输实例

下面通过一个例子,对UdpClient类的用法及它的一些方法进行说明。在UDP模式下,不存在明显的服务器与客户端之分,所以在这里用A端和B端代替。本例要实现的功能是从A端到B端的点对点通信。打开VS2008,在D:C#ch17目录下建立名为P2PTest的Windows应用程序。打开工程,为当前窗体添加如表17-9所示控件。

表17-9 添加控件列表

控件名 Name Text
Label Label1 对方IP:
TextBox tbIP  
TextBox tbMsg  
Button btnSend 发送
ListBox lbInfo  
GroupBox gbSend 发送窗口
GroupBox gbReceive 接收窗口
Button btnClear 清空

本例是利用8888端口进行局域网内部的点对点通信,只要确认对方IP,就能相互发送信息。代码的添加主要分为以下步骤。

(1)首先是对几个命名空间的引用,包括System.Net、System.Net.Sockets和System.Threading。然后定义如下三个全局变量。

private UdpClient uc;

private IPEndPoint iep;

private Thread th;

其中UdpClient是本例的核心成员,主要通过它的相关方法进行数据的收发。

(2)本例使用8888端口进行通信,所以应该在当前窗体构造函数Form1()内,用该端口实例化UdpClient。

public Form1()

    {

      InitializeComponent();

CheckForIllegalCrossThreadCalls = false;

      uc = new UdpClient(8888);

    }

CheckForIllegalCrossThreadCalls主要是解决线程间的控件操作问题,通过将其属性设置为fasle,可以禁用对操作控件的线程是否为创建该窗体的线程的检测,阻止该异常的发生。这种问题在第16章中也遇到过,当时是采用的委托的方法进行解决。

(3)双击“发送”按钮,添加如下代码。

iep = new IPEndPoint(IPAddress.Parse(tbIP.Text), 8888);

th = new Thread(new ThreadStart(listen));

th.IsBackground = true; //设置在后台运行

th.Start(); //启动线程

string temp = tbMsg.Text;

byte[] b = Encoding.UTF8.GetBytes(temp); //对发送的数据的进行UTF8格式的编码

uc.Send(b, b.Length,iep); //发送数据

时间: 2024-09-10 16:06:39

UDP数据传输实例的相关文章

[python] 专题七.网络编程之套接字Socket、TCP和UDP通信实例

        很早以前研究过C#和C++的网络通信,参考我的文章:                  C#网络编程之Tcp实现客户端和服务器聊天                 C#网络编程之套接字编程基础知识                 C#网络编程之使用Socket类Send.Receive方法的同步通讯        Python网络编程也类似.同时最近找工作笔试面试考察Socket套接字.TCP\UDP区别比较多,所以这篇文章主要精简了<Python核心编程(第二版)>第16章内

服务器-java 关于NIO实现UDP数据传输问题 ,急谢谢,C币不足请不要介意

问题描述 java 关于NIO实现UDP数据传输问题 ,急谢谢,C币不足请不要介意 各位大侠好,小弟想问一下问题,搞了一两天没有搞明白的.因为要实现一个UDP传输服务端,于是在网上找了很多资料然后就写了一个.但是写好之后发现有两个很严重的问题,希望各位大哥给点意见或者思路去解决.问题一:启动服务端,同时也启动客户端,客户端传输数据服务器正常接收,但是断开客户端后,再启动客户端,服务器就收不到任何客户端发送的消息,好像是服务器关闭了UDP一样,但是重启服务器后(重新打开UDP)客户端既可以发送信息

Android编程实现简单的UDP Client实例_Android

本文实例讲述了Android编程实现简单的UDP Client.分享给大家供大家参考,具体如下: 该代码在4.2.2内调试通过 1.记得加权限 <uses-permission android:name="android.permission.INTERNET"/> 注意:Android 4.0之后,就不能在主线程进行socket通信,否则会抛异常. 2.代码 MainActivity.java: package mao.example.quicksend; import

PHP的Socket通信之UDP通信实例

本文实例讲述了PHP的Socket通信之UDP通信方法.分享给大家供大家参考.具体如下: 1.创建一简单的UDP服务器 ? 18//服务器信息 $server = 'udp://127.0.0.1:9998'; //消息结束符号 $msg_eof = "n"; $socket = stream_socket_server($server, $errno, $errstr, STREAM_SERVER_BIND); if (!$socket) { die("$errstr ($

android开发socket编程之udp发送实例分析_Android

本文实例讲述了android开发socket编程之udp发送实现方法.分享给大家供大家参考.具体分析如下: 需要实现的功能:采用udp下的socket编程,当按下确认键,模拟器发送文本框数据,pc机上的网络调试助手接收 一.环境: win7 + eclipse + sdk 二.代码: package test.soket; //import com.test_button.R; import java.io.DataOutputStream; import java.io.IOException

Android编程实现简单的UDP Client实例

本文实例讲述了Android编程实现简单的UDP Client.分享给大家供大家参考,具体如下: 该代码在4.2.2内调试通过 1.记得加权限 <uses-permission android:name="android.permission.INTERNET"/> 注意:Android 4.0之后,就不能在主线程进行socket通信,否则会抛异常. 2.代码 MainActivity.java: package mao.example.quicksend; import

android开发socket编程之udp发送实例分析

本文实例讲述了android开发socket编程之udp发送实现方法.分享给大家供大家参考.具体分析如下: 需要实现的功能:采用udp下的socket编程,当按下确认键,模拟器发送文本框数据,pc机上的网络调试助手接收 一.环境: win7 + eclipse + sdk 二.代码: package test.soket; //import com.test_button.R; import java.io.DataOutputStream; import java.io.IOException

android的UDP编程实例_Android

一.有的手机不能直接接收UDP包,可能是手机厂商在定制Rom的时候把这个功能给关掉了.1.可先在oncreate()方法里面实例化一个WifiManager.MulticastLock 对象lock:具体如下: 复制代码 代码如下: WifiManager manager = (WifiManager) this                .getSystemService(Context.WIFI_SERVICE);WifiManager.MulticastLock lock= manag

python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)_python

UDP广泛应用于需要相互传输数据的网络应用中,如QQ使用的就是UDP协议.在网络质量不好的情况下,使用UDP协议时丢包现象十分严重,但UDP占用资源少,处理速度快,UDP依然是传输数据时常用的协议. 下面是用python实现UDP服务器的代码: 复制代码 代码如下: #!/usr/bin/env pythonimport socketaddress=('127.0.0.1',10000)s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)s.bind