• (转)winform下UPD通信的简单应用


    本文转载自:http://blog.csdn.net/wanlong360599336/article/details/7557046

    先看效果图:

    使用UDP的好处就是不需要三次握手,但是缺点就是存在安全隐患。

    QQ就是利用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.Sockets;  
    using System.Threading;  
    using System.Net;  
    using System.Net.Sockets;  
      
    namespace UDP  
    {  
        public partial class Form1 : Form  
        {  
            public Form1()  
            {  
                InitializeComponent();  
            }  
            //启动服务端  
            UdpClient udpServer;  
            delegate void SetTextCallBack(string text);  
            private void button1_Click(object sender, EventArgs e)  
            {  
                udpServer = new UdpClient(3000);  
                label2.Text = "服务器已启动..";  
                button1.Enabled = false;  
                Thread t = new Thread(new ThreadStart(ReceiveMsg));  
                t.IsBackground = true;  
                t.Start();  
                  
            }  
              
            public void ReceiveMsg()  
            {  
                IPEndPoint ipe = new IPEndPoint(IPAddress.Any, 3000);  
                while (true)  
                {              
                    byte[] buffer = udpServer.Receive(ref ipe);  
                    string msg = Encoding.Unicode.GetString(buffer);      
                    SetText(msg);  
                }  
                  
            }  
            public void SetText(string text)  
            {  
                if (text == "")  
                {  
                    if (richTextBox1.InvokeRequired)  
                    {  
                        SetTextCallBack st = new SetTextCallBack(SetText);  
                        this.Invoke(st, new object[] { text });  
                    }  
                    else  
                    {  
                        richTextBox1.Text +="小万  " +DateTime.Now.ToString() + "
    " + " " + "
    ";  
                    }  
                }  
                else  
                {  
                      
                        if (richTextBox1.InvokeRequired)  
                        {  
                            SetTextCallBack st = new SetTextCallBack(SetText);  
                            this.Invoke(st, new object[] { text });  
                        }  
                        else  
                        {  
                            richTextBox1.Text +="小万  " +DateTime.Now.ToString() + "
    " + text  + "
    ";  
                        }  
                      
                }  
            }  
            //客户端  
            private void button2_Click(object sender, EventArgs e)  
            {  
                if (button1.Enabled ==true)  
                {  
                    MessageBox.Show("服务端未开启!");  
                }  
                else  
                {  
                    UdpClient client = new UdpClient();  
                    string ip = textBox1.Text;  
                    string msg = richTextBox2.Text;  
                    byte[] buffer = Encoding.Unicode.GetBytes(msg);  
                    IPEndPoint ips = new IPEndPoint(IPAddress.Parse(ip), 3000);  
                    client.Send(buffer, buffer.Length, ips);  
                    client.Close();  
                    MessageBox.Show("发送成功!");  
                }  
      
            }  
           
        }  
    }  

    自己理解下。

  • 相关阅读:
    python(day1-11)
    如何进行测试管理
    为什么你参加了那么多培训,却依然表现平平?
    数据库总结
    为何大量网站不能抓取?爬虫突破封禁的6种常见方法
    re--读书笔记【转】
    re--findall 【转】
    re--参考手册
    bs4--官文--遍历文档树
    rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构
  • 原文地址:https://www.cnblogs.com/wpcnblog/p/3919190.html
Copyright © 2020-2023  润新知