zoukankan      html  css  js  c++  java
  • (转)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("发送成功!");  
                }  
      
            }  
           
        }  
    }  

    自己理解下。

  • 相关阅读:
    GFS读后笔记
    BigTable读后笔记
    恢复系统基础理论
    事务基础理论
    ARIES算法简介
    怎么快速构建自己的C/C++程序?——有关编译、静态链接和SCons
    lua学习笔记
    运行时动态伪造vsprintf的va_list
    11月30日站立会议
    11月29号站立会议
  • 原文地址:https://www.cnblogs.com/wpcnblog/p/3919190.html
Copyright © 2011-2022 走看看