使用UdpClient类进行编程

UdpClient类的使用方法

第一阶段 创建UdpClient实例

        UdpClient udpClient = new UdpClient();
IPAddress remoteAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint iep = new IPEndPoint(remoteAddress, );

第二阶段 数据发送

 byte[] sendBytes = System.Text.Encoding.Unicode.GetBytes("Hello C#");
udpClient.Send(sendBytes,sendBytes.Length,iep);

第二阶段 数据接收

 IPEndPoint iep2 = new IPEndPoint(IPAddress.Any, );
byte[] receiveBytes = udpClient.Receive(ref iep2);
string getData = System.Text.Encoding.Unicode.GetString(receiveBytes);

第三阶段 连接关闭

 udpClient.Close();

一般常用声明的方式如下

1 UdpClient udpClient2 = new UdpClient("127.0.0.1",8000);
2 udpClient2.Send(sendBytes, sendBytes.Length);

测试代码:

服务器程序:

 class Program
{
static void Main(string[] args)
{
StartListener();
Console.ReadLine();
} private static void StartListener()
{
UdpClient udpServer = new UdpClient(); //服务器方的端口号为8000 IPEndPoint myHost = null; try
{
while(true)
{
Console.WriteLine("等待接收...");
byte[] getBytes = udpServer.Receive(ref myHost);
string getString = Encoding.Unicode.GetString(getBytes, , getBytes.Length);
Console.WriteLine("接收信息:{0}",getString);
if (getString == "quit")
break; //向客户端回送消息
string sendString = "你好,Client";
Console.WriteLine("发送消息:{0}", sendString);
byte[] sendBytes = Encoding.Unicode.GetBytes(sendString);
udpServer.Send(sendBytes, sendBytes.Length, "127.0.0.1", ); } udpServer.Close();
Console.WriteLine("Client已经退出,请按回车键退出"); }
catch(Exception e)
{
Console.WriteLine(e.Message);
} }
}

客户端程序:

 class Program
{
static void Main(string[] args)
{
string sendString = "客户端发送";
Send(sendString);
Send("quit");
Console.WriteLine();
} private static void Send(string sendString)
{
UdpClient udpClient = new UdpClient();
try
{
Console.WriteLine("向服务器发送数据:{0}",sendString);
byte[] sendBytes = Encoding.Unicode.GetBytes(sendString);
udpClient.Send(sendBytes, sendBytes.Length, "127.0.0.1", );
if(sendString == "quit")
{
Console.WriteLine("已经向对方发送quit消息,请按回车键退出程序");
return;
} IPEndPoint myHost = null;
byte[] getBytes = udpClient.Receive(ref myHost);
string getString = Encoding.Unicode.GetString(getBytes);
Console.WriteLine("接收信息:{0}",getString);
udpClient.Close();
Console.ReadLine(); }
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}

运行结果:

服务器

客户端

当然,可以做成从控制台读取文本再进行发送。

最新文章

  1. 【USACO 1.5】SuperPrime Rib
  2. jquery 滚动到底部加载
  3. 监听spring加载完成后事件
  4. Nginx反向代理 负载均衡
  5. sql 集合运算
  6. 在FreeBSD上安装Bugzilla
  7. 三维云模拟Three.js
  8. dev XtraMessageBox按钮显示中文
  9. win7兼容oracle
  10. 可能是最详细的 Hexo + GitHub Pages 搭建博客的教程
  11. 推荐几个IDEA插件,Java开发者撸码利器。
  12. CentOS6.9安装WordPress搭建自己的博客网站
  13. (转)nginx uwsgi wsgi django 这些东西究竟是什么关系
  14. 获取MessageBox按钮本地字符串(OK、Cancel、Yes、No等)
  15. 一道面试题(C语言)
  16. DotNetBar ButtonX添加下拉面板
  17. nethogs 查看 Linux 进程的网络使用
  18. linux内核中的IPIs是什么?
  19. javascript捕获页面窗口关闭事件
  20. 能在xcode5中开发基于IOS7sdk的应用程序兼容ios4.3之后的系统吗?

热门文章

  1. HoloLens开发手记 - Unity development overview 使用Unity开发概述
  2. Spark源码在Eclipse中部署/编译/运行
  3. 曼慧尼特u检验(两个样本数据间有无差异)
  4. STL中的next_permutation
  5. equals()的用法
  6. PHP自学链接收藏
  7. Java 测试代码模板
  8. MVVM: 通过 x:Bind 实现 MVVM(不用 Command)
  9. 【Gym 100947C】Rotate It !!
  10. Hadoop 学习笔记3 Develping MapReduce