(转)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() + "\n" + " " + "\n";
                }
            }
            else
            {  

                    if (richTextBox1.InvokeRequired)
                    {
                        SetTextCallBack st = new SetTextCallBack(SetText);
                        this.Invoke(st, new object[] { text });
                    }
                    else
                    {
                        richTextBox1.Text +="小万  " +DateTime.Now.ToString() + "\n" + text  + "\n";
                    }  

            }
        }
        //客户端
        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("发送成功!");
            }  

        }  

    }
}  

自己理解下。

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

时间: 2024-08-01 07:37:33

(转)winform下UPD通信的简单应用的相关文章

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

本文转载自:http://blog.csdn.net/wanlong360599336/article/details/7557064 先看效果图: TCP比较繁琐的就是三次握手定理,每次再发送数据前都要先建立连接确认. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; us

linux下java程序与C语言程序通过SOCKET通信的简单例子

linux下java程序与C语言程序通过SOCKET通信的简单例子 今天上午实验了java程序与c语言程序通过socket进行通信.由于没学过java,因此只是编写了C语言端的代码,java端的代码是从网上别的文章中找的,经过少量修改后与C语言端程序通信成功. 本例中C语言端作为服务器,java端作为客户端 代码如下: /****************** server program *****************/ #include <stdio.h> #include <sy

分享在winform下实现模块化插件编程

其实很早之前我就已经了解了在winform下实现插件编程,原理很简单,主要实现思路就是:先定一个插件接口作为插件样式及功能的约定,然后具体的插件就去实现这个插件接口,最后宿主(应用程序本身)就利用反射动态获取实现了插件接口的类型作为合法的插件,从而完成动态加载及宿主与插件之间的互动.因为之前一段时间一直搞B/S架构开发没有时间去实践,而恰好现在公司领导要求我对我公司原有的ERP系统架构进行重整,我们的ERP系统采用的基于分布式的三层架构,核心业务逻辑放在服务端,展示层与业务层之间采用基于WEB服

linux下串口通信与管理

linux下的串口与windows有一些区别,下面将介绍一下linux下串口通信管理 查看是否支持USB串口: #lsmod | grep usbserial 如果没有信息:sudo apt-get install setserial 插上USB转串口,在终端输入命令 #dmesg | grep ttyUSB0 如果出现连接成功信息,则说明系统已经识别该设备 一.找到自己的串口设备 查找自己的开发板与电脑的连接的COM口方法 Windows:设备管理器 linux: (1)dmesg #查看带有

C#通信之Socket通信的简单例子

socket通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过”套接字”向网络发出请求或者应答网络请求. 这里构建一个简单的例子,客户端发消息,服务端接收,然后回执一条消息.大致能够了解如何使用Socket进行通信. 服务端监听,接收信息: 客户端连接,并发送信息: 使用Socket通信,程序一般会在幕后运行,然后再合适的时间提示信息.这很自然的就会涉及到多线程的问题.在这个例子中因为每个连接都要创建一 个线程,所以需要对线程进行管理.这里我使用了两个类:Conn

winform下通过webclient使用非流方式上传(post)数据和文件

这两天因为工作的需要,需要做一个winform上传数据到服务器端的程序.当时第一个想法是通过webservice的方式来实现,后来觉得麻 烦,想偷懒就没有用这样的方式,http的post方式变成了第一选择.因为以前用的都是httpwebrequest之类的东西进行post提 交,winform下面还真的是第一次,不过很快就在网上找到了webclient这个类,接下来开始实现功能,话说webclient用起来还真的很简 单,一个头信息的声明,然后是URL,最后是post的数据,就完事了.正在高兴的

一个Winform下DataGridView控件外观的自定义类

一.关于起因 最近非常频繁的使用DataGridView控件,VS提供的Winform下DataGridView的默认样式非常难看.如果做美化处理的话,需要调整的地方非常多,且该控件的很多设置属性非常的晦涩,不是很人性化.每次进行设置都煞费脑筋,并且需要设置的DataGridView控件又比较多,如果手工一个一个调整非常麻烦.如果在每个窗体里逐个一行一行的用代码来设置,会造成代码很凌乱.琐碎,因此我对DataGridView格式设置的常用项封装到一个Helper类,通过这个帮助类可以一步到位完成

ubuntu12.04下安装SQLite3及简单使用

今天想写一个小app,要用到数据库,所以在这里先简单记一下它的安装和用法. 1.安装SQLite3 命令行下输入:sudo apt-get install sqlite3 2.安装SQLite3编译需要的工具包 命令行下输入: sudo apt-get install libsqlite3-dev 3.安装图形界面 (如果你喜欢) 命令行输入: sudo apt-get install sqlitebrowser 数据库的简单使用:(看以下链接) 点击打开链接 最后,退出数据库:执行.quit

memcache的windows下的安装和简单使用

原文:memcache的windows下的安装和简单使用 memcache是为了解决网站访问量大,数据库压力倍增的解决方案之一,由于其简单实用,很多站点现在都在使用memcache,但是memcache缺点之一却是缺少安全性验证,所以一般而言我们都会把一些访问量大,但是不需要验证的数据放在这里,需要用的时候来这里取,就给数据库减少了很多的负担.一般而言设定个更新时间就好了,1个小时左右更新一次. windows下安装和测试memcache最为方便,Linux只是需要相应的编译包就行了,需要包括m