本文转载自: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("发送成功!"); } } } }
自己理解下。