
本文共 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();
}
}
}
发表评论
最新留言
关于作者
