您的位置:首页 > 其它

最简单的Socket程序[入门篇]

2008-02-29 20:18 337 查看
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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: