• 大小: 175KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-17
  • 语言: C#
  • 标签: C#  UDP  

资源简介

一个C#编写的UDP通信实例,在两个不同的电脑上打开项目,可以进行通信。测试用,能实现我方发送,对方接收,同时我方屏幕也记录发送数据,类似于聊天环境。

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;

/* UDP通信原理:
 * 使用UDP通信没有服务器和客户端的区别,双方是平等的。我和对方在通信时,我和对方的接收和发送数据的模式一模一样。
 * 以下从我的角度,说明通信的模式:
 * 我在我的IP地址下,指定一个端口,我用这个端口进行数据的收和发;
 * 接收的过程是持续性的,我每时每刻都在查询我的这个端口上是否有数据过来,有的话就放在Thread上,即接收下来,不区分是谁发过来的,不考虑是否和对方建立了连接。
 * 接收下来的UDP数据报,我对它进行解码,之后进行显示等操作。
 * 发送的过程是我控制的,我想发给谁,只要指定接收人的IP地址和端口,我把数据进行编码,以UDP数据报的形式发出去就好了。 */

namespace UDPClient_Server
{
    public partial class UDPForm : Form
    {
        public string recvData=““;  //接收到的数据初始化
        public static string IP_Local;  //公共静态本机IP地址
        public static int Port_Local;   //公共静态本机接收和发送的端口
        public static UdpClient recvClient;  //UDP数据报接收服务
        public static Thread recThread;   //线程;用于接收数据而启用的

        public UDPForm()
        {
            InitializeComponent();
        }

        private void btnSend_Click(object sender EventArgs e)  //发送数据
        {
            if (string.IsNullOrWhiteSpace(txtRemoteIP.Text.Trim()) || string.IsNullOrWhiteSpace(txtRemotePort.Text.Trim()))
            {
                MessageBox.Show(“请输入接收方“);
            }
            else if (string.IsNullOrWhiteSpace(rtxtSend.Text.Trim()))
            {
                MessageBox.Show(“请输入发送内容“);
            }
            else
            {
                string senddata = rtxtSend.Text;
                byte[] sendData = Encoding.Default.GetBytes(senddata);  //将要发送的数据进行编码
                int sendLen = sendData.Length;
                UdpClient sendClient = new UdpClient();    //UDP数据报发送服务
                string IP_Remote = txtRemoteIP.Text;
                int Port_Remote = Convert.ToInt32(txtRemotePort.Text);
                sendClient.Send(sendData sendLen new IPEndPoint(IPAddress.Parse(IP_Remote) Port_Remote));  //发送给指定接收的IP及其端口
                rtxtRec.Text += “我:“ + senddata+ “\r\n“;
                rtxtSend.Clear();
                sendClient.Close();   //结束UDP数据报发送服务
            }
        }

        private void timer1_Tick(object sender EventArgs e)  //定时器,持续性对有无收到数据进行查询
        {
            timer1.Enabled = false;
            if (recvData.Length > 0)       //有数据就显示,显示后就将数据清空,防止重复显示
            {
                rtxtRec.Text += “对方:“ + recvData + “\r\n“;
                recvData = ““;
            }
            timer1.Enabled = true;
        }

        private void btnServer_Click(object sender EventArgs e)
        {
            IP_Local = txtLocateIP.Text;
            Port_Local = Convert.ToInt32(txtLocatePort.Text);
            recvClient = new UdpClient(Port_Local);  //指定一个端口,进行UDP数据报接收服务
            recThread = new Thread(Rec_Data);  //指定线程要接收来自指定端口的数据
            void Rec_Data()
            {
                IPEndPoint Remoteip = new IPEndPoint(IPAddress.Any Port_Local)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     80384  2018-12-03 16:45  UDPClient_Server\.vs\UDPClient_Server\v15\.suo

     文件          0  2018-11-24 17:04  UDPClient_Server\.vs\UDPClient_Server\v15\Server\sqlite3\db.lock

     文件     593920  2018-11-30 19:39  UDPClient_Server\.vs\UDPClient_Server\v15\Server\sqlite3\storage.ide

     文件      32768  2018-12-03 16:41  UDPClient_Server\.vs\UDPClient_Server\v15\Server\sqlite3\storage.ide-shm

     文件          0  2018-12-03 16:29  UDPClient_Server\.vs\UDPClient_Server\v15\Server\sqlite3\storage.ide-wal

     文件        189  2018-11-24 17:04  UDPClient_Server\UDPClient_Server\App.config

     文件      12800  2018-12-03 16:42  UDPClient_Server\UDPClient_Server\bin\Debug\UDPClient_Server.exe

     文件        189  2018-11-24 17:04  UDPClient_Server\UDPClient_Server\bin\Debug\UDPClient_Server.exe.config

     文件      32256  2018-12-03 16:42  UDPClient_Server\UDPClient_Server\bin\Debug\UDPClient_Server.pdb

     文件       4888  2018-12-03 16:45  UDPClient_Server\UDPClient_Server\Form1.cs

     文件      11754  2018-11-26 17:16  UDPClient_Server\UDPClient_Server\Form1.Designer.cs

     文件       6011  2018-11-26 17:16  UDPClient_Server\UDPClient_Server\Form1.resx

     文件       1443  2018-11-24 18:56  UDPClient_Server\UDPClient_Server\obj\Debug\DesignTimeResolveAssemblyReferences.cache

     文件       7373  2018-11-25 19:44  UDPClient_Server\UDPClient_Server\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache

     文件          0  2018-11-24 17:04  UDPClient_Server\UDPClient_Server\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs

     文件          0  2018-11-24 17:04  UDPClient_Server\UDPClient_Server\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs

     文件          0  2018-11-24 17:04  UDPClient_Server\UDPClient_Server\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs

     文件         42  2018-11-24 17:04  UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.csproj.CoreCompileInputs.cache

     文件       1387  2018-11-26 15:46  UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.csproj.FileListAbsolute.txt

     文件       1012  2018-11-26 17:16  UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.csproj.GenerateResource.cache

     文件      11490  2018-11-24 17:04  UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.csprojAssemblyReference.cache

     文件      12800  2018-12-03 16:42  UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.exe

     文件      32256  2018-12-03 16:42  UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.pdb

     文件        180  2018-11-26 17:44  UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.Properties.Resources.resources

     文件        180  2018-11-26 17:44  UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.UDPForm.resources

     文件        530  2018-11-24 17:05  UDPClient_Server\UDPClient_Server\Program.cs

     文件       1330  2018-11-24 17:04  UDPClient_Server\UDPClient_Server\Properties\AssemblyInfo.cs

     文件       2845  2018-11-24 17:04  UDPClient_Server\UDPClient_Server\Properties\Resources.Designer.cs

     文件       5612  2018-11-24 17:04  UDPClient_Server\UDPClient_Server\Properties\Resources.resx

     文件       1103  2018-11-24 17:04  UDPClient_Server\UDPClient_Server\Properties\Settings.Designer.cs

............此处省略19个文件信息

评论

共有 条评论