本文共 1446 字,大约阅读时间需要 4 分钟。
using System.Net.Sockets;
using System.Net;using System.Threading;namespace ChatUDPVersion
{ public partial class frmChat : Form { delegate void SetTextCallback(string text);bool isOpen = true;
Thread thread;public frmChat()
{ InitializeComponent(); }private void btnSend_Click(object sender, EventArgs e)
{ UdpClient clientSend = new UdpClient(Dns.GetHostName(), 8008); try { Byte[] sendInfo = Encoding.Default.GetBytes(tbSend.Text); clientSend.Send(sendInfo, sendInfo.Length); tbSend.Text = string.Empty; } catch(Exception ex) { MessageBox.Show(ex.Message); } finally { clientSend.Close(); } } private void GetMessage() { UdpClient client = new UdpClient(8008); IPEndPoint ipRemoteEndPoint = new IPEndPoint(IPAddress.Any, 8008); byte[] receInfo; while (isOpen) { try { receInfo = client.Receive(ref ipRemoteEndPoint); } catch (Exception ex) { MessageBox.Show(ex.Message); break; } AddMessage(Encoding.Default.GetString(receInfo)); } client.Close(); }public void AddMessage(string message)
{ if (this.lbReceive.InvokeRequired) { SetTextCallback d = new SetTextCallback(AddMessage); this.Invoke(d, new object[] { message }); } else { lbReceive.Items.Add(message); } }private void frmChat_Load(object sender, EventArgs e)
{ thread = new Thread(new ThreadStart(this.GetMessage)); thread.IsBackground = true; thread.Start(); }private void frmChat_FormClosing(object sender, FormClosingEventArgs e)
{ isOpen = false; Application.Exit(); } }}转载地址:http://kyje.baihongyu.com/