------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
今天学习啦黑马的多线程与Socket编程,不过老师只讲了TCP方式的Socket的,聊天工具还是UDP的好哇,我偷个懒,做了一个基于UDP的聊天工具,源码分享给大家,欢迎大家批评指正。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
TextBox.CheckForIllegalCrossThreadCalls = false;
//开一个接收数据的线程
Thread threadRecv = new Thread(RecvMsg);
threadRecv.IsBackground = true;
threadRecv.Start();
}
//发送数据
private void btn_send_Click(object sender, EventArgs e)
{
IPAddress ip = IPAddress.Parse(txt_ip.Text.Trim());
IPEndPoint ipto = new IPEndPoint(ip, 6000);
byte[] byMsg = System.Text.Encoding.UTF8.GetBytes(txt_sendmsg.Text.Trim());
Socket sockSend = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
sockSend.SendTo(byMsg, ipto);
}
//接收数据
void RecvMsg()
{
IPAddress ip = IPAddress.Any;
IPEndPoint listenport = new IPEndPoint(ip, 6000);
//IPEndPoint sender =
EndPoint senderRemote = (EndPoint) new IPEndPoint(ip, 0);
byte[] byMsg = new byte[100];
Socket sockRecv = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
sockRecv.Bind(listenport);
while (true)
{
int len = sockRecv.ReceiveFrom(byMsg, ref senderRemote);
txt_recvmsg.AppendText(((IPEndPoint)senderRemote).Address.ToString()+ ":"
+System.Text.Encoding.UTF8.GetString(byMsg,0,len)+"\r\n");
}
}
}