zoukankan      html  css  js  c++  java
  • UDP 网络通信 C#

    接收端

     
    using System;
    
    using System.Net;
    
    using System.Net.Sockets;
    
    using System.Text;
    
    using System.Threading;
    
    using System.Windows.Forms;
    
     
    
    namespace UDPReceiveTest
    
    {
    
        public partial class Form1 : Form
    
        {
    
            public UdpClient udpClient;
    
            public Thread UdpThread;
    
     
    
            public Form1()
    
            {
    
                InitializeComponent();
    
            }
    
     
    
            private void Form1_Load(object sender, EventArgs e)
    
            {
    
                if (UdpThread != null)
    
                {
    
                    UdpThread.Abort();
    
                    Thread.Sleep(TimeSpan.FromMilliseconds(500d));
    
                }
    
     
    
                System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
    
     
    
                if (udpClient != null)
    
                {
    
                    UdpThread.Abort();
    
                    Thread.Sleep(TimeSpan.FromMilliseconds(500d));
    
                    udpClient.Close();
    
                }
    
                try
    
                {
    
                    udpClient = new UdpClient(int.Parse(txtPort.Text));
    
                    UdpThread = new Thread(new ThreadStart(UdpReciveThread));
    
                    UdpThread.Start();
    
                }
    
                catch (Exception y)
    
                {
    
                    MessageBox.Show(this, y.Message, "Error", MessageBoxButtons.OK,MessageBoxIcon.Error);
    
                    this.Dispose(true);
    
                }
    
            }
    
     
    
            private void button1_Click(object sender, EventArgs e)
    
            {
    
                txtMessage.Text = string.Empty;
    
            }
    
     
    
            delegate void SetTextCallback(IPEndPoint remoteHost, byte[] buf, string bufs);
    
            //接收数据线程
    
            void UdpReciveThread()
    
            {
    
                IPHostEntry oIPHost = Dns.GetHostEntry(Environment.MachineName);
    
                IPEndPoint remoteHost = new IPEndPoint(IPAddress.Any, 0);
    
     
    
                while (udpClient != null &&Thread.CurrentThread.ThreadState.Equals(ThreadState.Running))
    
                {
    
                    try
    
                    {
    
                        byte[] buf = udpClient.Receive(ref remoteHost);
    
                        string bufs = Encoding.UTF8.GetString(buf);
    
     
    
                        txtMessage.Text += remoteHost.Address.ToString() + "说:" +Environment.NewLine;
    
                        txtMessage.Text += bufs + Environment.NewLine;
    
                    }
    
                    catch (Exception y)
    
                    {
    
     
    
                    }
    
                }
    
     
    
                txtMessage.Text += "结束..." + (char)13;
    
            }
    
     
    
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    
            {
    
                try
    
                {
    
                    udpClient.Close();
    
                    UdpThread.Abort();
    
                }
    
                catch
    
                {
    
     
    
                }
    
            }
    
        }
    
    }

    发送端

    using System;
    
    using System.Net.Sockets;
    
    using System.Text;
    
    using System.Windows.Forms;
    
     
    
    namespace UDPSendTest
    
    {
    
        public partial class Form1 : Form
    
        {
    
            public Form1()
    
            {
    
                InitializeComponent();
    
            }
    
     
    
            private void btnSend_Click(object sender, EventArgs e)
    
            {
    
                 try
    
                {
    
                    UdpClient uc = new UdpClient(txtIP.Text, int.Parse(txtPort.Text));
    
     
    
                    byte[] sendbuf = Encoding.UTF8.GetBytes(txtMessage.Text);
    
                    uc.Send(sendbuf, sendbuf.Length);
    
                }
    
                catch (Exception y)
    
                {
    
                    MessageBox.Show(this, y.Message, "发送失败", MessageBoxButtons.OK,MessageBoxIcon.Hand);
    
                }
    
            }
    
        }
    
    }
  • 相关阅读:
    骆驼命名法,帕斯卡命名法和匈牙利命名法<转>
    海量数据库查询优化<转>
    备份数据库并生成Rar
    标准http状态码[英文注释版本]<转>
    IIS自动停止,iis自动关闭。应用程序池假死、自动重启以及iis权限等解决办法 <转>
    Flex/Silverlight的技术比较<转>
    .NET平台测试驱动开发模拟框架Moq简明教程(实例剖析)<转>
    VisualStudio用IE8调试时遇到的问题(转)
    English learning
    JS调用WebService示例
  • 原文地址:https://www.cnblogs.com/jhlong/p/5445434.html
Copyright © 2011-2022 走看看