在.net中使用Udp协议创建简单的聊天程序
来源:互联网 发布:ui和程序员漫画 编辑:程序博客网 时间:2024/04/30 08:22
在.net中使用Udp协议创建简单的聊天程序
电子科技大学软件学院03级 周银辉
转载请注明出处
1,说明:
在这之前你应该对网络协议有一点点了解(比如至少知道Socket,知道udp与tcp的区别),由于.net将相关知识包装得太好,所以你可以利用System.net.socket名字空间里的类轻松地编写一个聊天程序,但却不知道为什么应该这样,如果需要了解细节,你可以尝试使用VC++来完成这个程序。
需要了解更多的知识,你可以访问“中国协议网”http://www.cnpaf.net/。
2,怎样连接两台计算机?
注意,Udp是无连接传输协议,也就时说它在通信前不会实现在两台计算机之间建立连接。它只会守候在指定的端口上等待传入的数据以及将数据从指定的端口上“抛”出去,而不会去顾及数据的传输。这一点也就造成了数据传输的不可靠性。
在我们的程序中,通信的两台计算机之间是平等的关系,没有主机于客户端之分(你也可以指定默认主机,但那是另一个程序)
3,如何利用Udp协议?
通过UdpClient类, 它将为我们提供Udp网络服务,最简单的说法是我们可以用它来进行基于Udp协议的接收信息和发送信息。
注意,它是阻塞的(处于阻塞(或同步)模式时,套接字的函数直到可以完成自己的操作时才返回)。
4, 对方是谁?
要链接到对方,我们得知道对方是谁, 很容易想到的是通过ip地址,除此之外,要完成我们的通信,还要有一个数据:端口号。
IPEndPoint,组合了ip地址和端口号的数据结构。在我们的程序中将用它来形成通信的连接点。
5,如何接收信息?
服务员守住门口,有客来就把他拉进来
服务员:我们自己的一个UdpClient对象
门口: 本机端口
客人来自:远程计算机对应的IPEndPoint对象
拉进来:UdpClient对象的Receive()方法
注意:Receive()方法是阻塞的,也就是说它在得到远程传来的数据后才会返回,否则一直等待(服务员将一直守在门口,直到有客人来),这将造成其所在线程的阻塞,那么我们将在非主线程中执行该方法。
private void GetMessage()
{
this.clientGetMsg = new UdpClient(this.port);//this.port我们指定的端口号
//用于保存远程计算机ip和端口信息(保存客人从哪里来的信息)
IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, 0);
byte[] btInfo;
while (true)
{
try
{
//接收信息
btInfo = this.clientGetMsg.Receive(ref remoteEP);
}
catch (Exception)
{
//MessageBox.Show("error at receiving msg:/n" + ex.Message);
return;
}
//将得到的数据进行处理,我们这里是将它转成字符串
string msg = Encoding.Default.GetString(btInfo);
//
//do something else
//
}
}
6,如何发送信息?
告诉邮递员收信人地址和姓名,让邮递员来传递。
邮递员:UdpClient对象
收信人地址:远程计算机Ip
收信人:远程计算机某一端口
传递:UdpClient对象的Send()方法
注意,请在非主线程中执行该方法
private void SendMessage()
{
string ip = "10.0.0.122" //假设这是对方的Ip;
UdpClient client = new UdpClient(ip,this.port);//this.port我们指定的端口
//我们要传送的数据,这里传送了一个字符串
Byte[] btInfo = Encoding.Default.GetBytes("Information");
try
{
client.Send(btInfo, btInfo.Length);
}
catch (Exception ex)
{
//MessageBox.Show("error at sending msg:/n" + ex.Message);
return;
}
client.Close();
//
//do something else
//
}
7,更多的
这里仅仅简单地介绍了相关内容,可以在msdn库找到更多有趣的内容。
程序较简单就没有必要提供源代码下载了。
如果你的确需要的话,可以通过这个email:yinhui_zhou@yahoo.com.cn索取
- 在.net中使用Udp协议创建简单的聊天程序
- 在.net中使用Udp协议创建简单的聊天程序
- 基于UDP协议的简单聊天程序
- 一个简单的基于udp协议的聊天程序
- 使用UDP协议的JAVA网络聊天程序
- Java使用UDP协议编写聊天程序
- UDP协议聊天程序
- 使用UDP实现一个简单的聊天程序。
- java中UDP简单聊天程序
- 基于UDP的简单聊天程序
- 基于UDP的简单聊天程序
- 简单的udp单人聊天程序
- 基于UDP的简单聊天程序
- 【Java网络编程】UDP协议实例——简单的在线聊天程序
- JAVA学习第六十课 — UDP协议 &基于多线程模拟简单的QQ聊天程序
- 使用ServerSocket、Socket创建一个简单的服务聊天程序
- UDP协议的简单使用
- UDP实现简单聊天程序
- 每天OnlineJudge之 “数素数”
- 堆栈小应用:配对
- 每天OnLineJudge 之 “蛇形矩阵 ”
- 每天OnLineJudge 之 “杨辉三角 ”
- 小问题,对递归重复调用的改进,一起来分享
- 在.net中使用Udp协议创建简单的聊天程序
- 以前我自己设计的“俄罗斯方块”,觉得挺有意思,今天贴出来
- 好书推荐 : 《深入理解计算机系统》(中文版,pdf格式)
- 全排列问题之递归求解
- 用.net打造可编程的表达式计算器
- 使用Mci指令打造你自己的媒体播放器
- 到同济大学OnLineJudge逛了一下
- 我的第一个博客家园
- RMI的几个问题总结, 共勉