视频图像处理系列索引 || Arcgis/Engine/Server开发索引 || Web Map Gis开发索引 || jquery表格组件 JQGrid索引
WPF MVVM模式开发实现简明教程索引 || ArcGIS Runtime WPF(.net C#)开发简明教程索引

UDP SOCKET网络通信 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 Thread UdpThread;

 

        public Form1()

        {

            InitializeComponent();

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

            string strHostIP = "";

            IPHostEntry oIPHost = Dns.GetHostEntry(Environment.MachineName);

            if (oIPHost.AddressList.Length > 0)

                strHostIP = oIPHost.AddressList[0].ToString();

            this.txtIP.Text = strHostIP;

 

            if (UdpThread != null)

            {

                UdpThread.Abort();

                Thread.Sleep(TimeSpan.FromMilliseconds(500d));

            }

           

            try

            {

                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()

        {

            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,ProtocolType.Udp);

            IPEndPoint iep = new IPEndPoint(IPAddress.Any, int.Parse(txtPort.Text));//接收广播信息,端口是(因为是广播端口是)

            socket.Bind(iep);

            EndPoint ep = (EndPoint)iep;

            Byte[] bytes = new byte[1024];

            while (Thread.CurrentThread.ThreadState.Equals(ThreadState.Running))

            {

                int message = socket.ReceiveFrom(bytes, ref ep);//接收发送的信息

                string bufs = Encoding.UTF8.GetString(bytes);

 

                txtMessage.Text += (ep as IPEndPoint).Address.ToString() + "说:" +Environment.NewLine;

                txtMessage.Text += bufs + Environment.NewLine + Environment.NewLine;

            }

 

            txtMessage.Text += "结束..." + (char)13;

        }

 

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)

        {

            try

            {

                UdpThread.Abort();

            }

            catch

            {

 

            }

        }

    }

}

 

发送端

using System;

using System.Net;

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)

        {

            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,ProtocolType.Udp);

            IPEndPoint iep1 = new IPEndPoint(IPAddress.Parse(txtIP.Text),int.Parse(txtPort.Text));//进行地址的广播,广播端口

            byte[] data = Encoding.ASCII.GetBytes(txtMessage.Text);

            sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);

            sock.SendTo(data, iep1);//发送字符

            sock.Close();

        }

    }

}

 

posted @ 2016-04-29 10:37  jhlong  阅读(347)  评论(0编辑  收藏  举报
海龙的博客 jhlong@cnblogs 版权所有© 转载请注明链接.有用请推荐一下
代码全部经过本人测试,但不保证复制粘贴就正常运行,更不保证能解决你的问题,请结合前后代码及描述理解后修改和使用