概述
Udp通讯之服务器及客户端
我坚信付出不一定有回报,但是不付出绝对没有回报,给我选,我毫无办法,只能选择付出,不为别的,只为看到明天冉冉东升的朝阳。废话少说,先从服务器说起
--------udp通讯之服务器
Udp通讯连接非常之简单
先声明几个通用变量
UdpClient client = null;
string receiveString = null;
byte[] receiveData = null;
IPEndPoint remotePoint = new IPEndPoint(IPAddress.Any, 0);
然后开启服务器,进行数据接收
private void button1_Click(object sender, EventArgs e)
{
//
displayMsg("服务器启动完毕,等待接收数据。。。");
Thread td1 = new Thread(()=> {
while (true)
{
receiveData = client.Receive(ref remotePoint);//接收数据
receiveString = Encoding.Default.GetString(receiveData);
displayMsg(remotePoint+"接收到的数据为:" + receiveString);
}
});
td1.IsBackground = true;
td1.Start();
button1.Enabled = false;
}
然后向客户端发送数据
private void button2_Click(object sender, EventArgs e)
{
//发送数据
if (!button1.Enabled&&client!=null)
{
string msg = textBox1.Text.Trim();
byte[] buffer = Encoding.Default.GetBytes(msg);
client.Send(buffer,buffer.Length,remotePoint);
msg = remotePoint.ToString() + "发送的数据为:" + msg;
displayMsg(msg);
}
}
最后做一个数据输出到文本的功能
private void displayMsg(string msg)
{
msgDisplay.Invoke(new Action<string>((s)=> {
msgDisplay.AppendText(s+"rn");
}),msg);
}
大功告成。。。。
--------服务器来了,那就再来一个客户端吧
老规矩,先来几个公共变量吧
UdpClient client = null;
IPEndPoint remotePoint;
bool flag = false;
下面就该数据发送了
private void button1_Click(object sender, EventArgs e)
{
try
{
byte[] sendData = Encoding.Default.GetBytes(textBox2.Text.Trim());
client.Send(sendData, sendData.Length, remotePoint);
string msg = "发送的数据为:" + remotePoint + "-->" +client+":"+ Encoding.Default.GetString(sendData);
msgDisplay(msg);
// msgDisplay(Encoding.Default.GetString(client.Receive(ref remotePoint)));
//flag = true;
}
catch(Exception ex)
{
msgDisplay(ex.ToString());
}
}
//在就是一个数据循环接收的程序
private void button2_Click(object sender, EventArgs e)
{
msgDisplay("数据循环接收开启。。。");
Thread td2 = new Thread(()=> {
while (true)
{
try
{
msgDisplay(Encoding.Default.GetString(client.Receive(ref remotePoint)));
}
catch
{
Thread.Sleep(1000);
msgDisplay("服务器未开启,");
// break;
}
}
});
td2.IsBackground = true;
td2.Start();
}
你说要不要搞个数据显示的程序呢 ?那是必须的
private void msgDisplay(string v)
{
textBox1.Invoke(new Action<string>((str)=> {
textBox1.AppendText(str+"rn");
}),v);
}
现在应该没有什么话说了把,完美解决!
最后
以上就是听话蜻蜓为你收集整理的c#udp通讯之服务器及客户端的全部内容,希望文章能够帮你解决c#udp通讯之服务器及客户端所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复