本文转载自: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();
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, );
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), );
client.Send(buffer, buffer.Length, ips);
client.Close();
MessageBox.Show("发送成功!");
} } }
}

自己理解下。

最新文章

  1. 使用D3制作图表(1)--画布绘制
  2. paip.java c# .net php python调用c++ c dll so windows api 总结
  3. google登录不了解决喽
  4. iPhone批量删除照片/视频最好用的方法
  5. 最大子段和问题,最大子矩阵和问题,最大m子段和问题
  6. poj 3026 Borg Maze 最小生成树 + 广搜
  7. 利用正则表达式解析URL
  8. 2015 NOIP day2 t2 信息传递 tarjan
  9. 20个非常绚丽的 CSS3 特性应用演示
  10. Struts2之Action接收请求参数和拦截器
  11. roslaunch & gdb 调试指南(待补充)
  12. swift 学习- 20 -- 错误处理
  13. 使用diskpart命令格式化U盘
  14. 程序重启RocketMQ消息重复消费
  15. phpstudy2018配置站点后500错误问题
  16. [Leetcode]134.加油站
  17. 12.22日wagas学习笔记
  18. Web知识简易介绍及HTTP知识总结
  19. python2 - 列表
  20. 修改CFileDialog的标题

热门文章

  1. numpy 矩阵归一化
  2. css属性(冷用法)
  3. linux find命令使用(转)
  4. [csharp] bool IsNumeric(Type type)
  5. Neutron的安全组原理
  6. 【spark】常用转换操作:keys 、values和mapValues
  7. Javascript鼠标和滚轮事件
  8. Kotlin Android Extensions (译文)
  9. 重读tcp-ip详解三卷:1
  10. poj 1952 最长公共子序列计数