C#使用UdpClient发送和接收UDP数据示例 16进制与字符串互转

C#使用UdpClient发送和接收UDP数据示例 16进制与字符串互转 - CSDN博客  http://blog.csdn.net/xuehuic/article/details/53812647

1.服务器

[csharp]  view plain  copy
  1. using System;  
  2. using System.Net;  
  3. using System.Net.Sockets;  
  4. using System.Text;  
  5.   
  6. namespace ConsoleApplication1  
  7. {  
  8.     class Program  
  9.     {  
  10.         static void Main(string[] args)  
  11.         {  
  12.             Server(10086); //监听10086端口  
  13.         }  
  14.   
  15.         /// <summary>  
  16.         /// 服务器端  
  17.         /// </summary>  
  18.         /// <param name="port"></param>  
  19.         static void Server(int port)  
  20.         {  
  21.             try  
  22.             {  
  23.                 UdpClient udpclient = new UdpClient(port);  
  24.                 while (true)  
  25.                 {                      
  26.                     IPEndPoint ipendpoint = null;  
  27.                     byte[] bytes = udpclient.Receive(ref ipendpoint); //停在这等待数据  
  28.                     string data = Encoding.Default.GetString(bytes, 0, bytes.Length);                      
  29.   
  30.                     Console.WriteLine("{0:HH:mm:ss}->接收数据(from {1}:{2}):{3}", DateTime.Now, ipendpoint.Address, ipendpoint.Port, data);  
  31.                 }  
  32.                 udpclient.Close();  
  33.             }  
  34.             catch (Exception ex)  
  35.             {  
  36.                 Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, ex.Message);  
  37.             }  
  38.             Console.ReadKey();  
  39.         }  
  40.     }  
  41. }  


2.客户端

[csharp]  view plain  copy
  1. using System;  
  2. using System.Net;  
  3. using System.Net.Sockets;  
  4. using System.Text;  
  5.   
  6. namespace ConsoleApplication1  
  7. {  
  8.     class Program  
  9.     {  
  10.         static void Main(string[] args)  
  11.         {  
  12.             Client("127.0.0.1", 10086, "play"); //发送数据  
  13.         }  
  14.   
  15.         /// <summary>  
  16.         /// 客户端  
  17.         /// </summary>  
  18.         /// <param name="ip"></param>  
  19.         /// <param name="port"></param>  
  20.         /// <param name="message"></param>  
  21.         static void Client(string ip, int port, string message)  
  22.         {  
  23.             try  
  24.             {  
  25.                 UdpClient udpclient = new UdpClient();  
  26.                 IPEndPoint ipendpoint = new IPEndPoint(IPAddress.Parse(ip), port);  
  27.                 byte[] data = Encoding.Default.GetBytes(message);  
  28.                 udpclient.Send(data, data.Length, ipendpoint);  
  29.                 udpclient.Close();  
  30.   
  31.                 Console.WriteLine("{0:HH:mm:ss}->发送数据(to {1}):{2}", DateTime.Now, ip, message);  
  32.             }  
  33.             catch (Exception ex)  
  34.             {  
  35.                 Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, ex.Message);  
  36.             }  
  37.             Console.ReadKey();  
  38.         }  
  39.     }  
  40. }  

3. 字符串转16进制,然后直接发送16进制。
[csharp]  view plain  copy
  1. public static byte[] HexStringToByteArray(string s)  
  2.         {  
  3.             if (s.Length = 0)  
  4.                 throw new Exception("将16进制字符串转换成字节数组时出错,错误信息:被转换的字符串长度为0。");  
  5.             s = s.Replace(" """);  
  6.             byte[] buffer = new byte[s.Length / 2];  
  7.             for (int i = 0; i < s.Length; i += 2)  
  8.                 buffer[i / 2] = Convert.ToByte(s.Substring(i, 2), 16);  
  9.             return buffer;  
  10.         }  

4.16进制转字符串,接收端用于识别显示

[csharp]  view plain  copy
  1. /// <summary>  
  2. /// 字节数组转换成十六进制字符串(不带空格)  
  3. /// </summary>  
  4. /// <param name="data">要转换的字节数组</param>  
  5. /// <returns>转换后的字符串</returns>  
  6. public static string ByteArrayToHexStringNoBlank(byte[] data)  
  7. {  
  8.     StringBuilder sb = new StringBuilder(data.Length * 3);  
  9.     foreach (byte b in data)  
  10.         sb.Append(Convert.ToString(b, 16).PadLeft(2, '0'));  
  11.     return sb.ToString().ToUpper();  
  12. }  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值