C# udp简易版

有两张方法:一种是用socket搞,另一种是用封装过的UdpClient搞(第二种更精简)

直接上代码:

第一种

客户端:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace udpClient
{
    //udp客户端
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入要发送的内容:");

            UdpClient udpClient = new UdpClient();
            while (true)
            {
                string message = Console.ReadLine();
                //我的电脑是这个ip,你们自己测的时候根据实际情况而定
                udpClient.SendMessage(message, "192.168.1.104", 3333);
            }
        }
    }



public class UdpClient { Socket udpSocket; public UdpClient() { //创建Socket udpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//初始化 } /// <summary> /// 发送消息 /// </summary> /// <param name="messages">消息内容</param> /// <param name="strIp">目标ip</param> /// <param name="port">目标端口号</param> public int SendMessage(string message, string strIp, int port) { //发送数据 EndPoint serverPoint = new IPEndPoint(IPAddress.Parse(strIp), port); if (udpSocket == null) { Console.WriteLine("socket未初始化!"); return 0; } else if (serverPoint == null) { Console.WriteLine("目标ip和端口号不能为空!"); return 0; } else if (message == null || string.IsNullOrEmpty(message)) { Console.WriteLine("发送信息不能为空!"); return 0; } byte[] data = Encoding.UTF8.GetBytes(message); udpSocket.SendTo(data, serverPoint);//发送 return 1; } } }

 

 

服务端:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace udpServer
{
    //udp服务器
    class Program
    {
        static void Main(string[] args)
        {
            UdpServer udpServer = new UdpServer("192.168.1.104", 3333);
            udpServer.StartReceive();
            Console.ReadLine();
        }
    }



public class UdpServer { private Socket udpServer; public UdpServer(string strIp, int port) { //创建socket udpServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //绑定ip和端口号 try { //绑定的ip可能是错误的,要抛出异常 udpServer.Bind(new IPEndPoint(IPAddress.Parse(strIp), port)); } catch (Exception ex) { Console.WriteLine("错误信息:" + ex.Message); throw ex; } } /// <summary> /// 开始接收消息 /// </summary> public int StartReceive() { if (udpServer.LocalEndPoint == null) { Console.WriteLine("未绑定自身ip和端口号"); return 0; } new Thread(ReceiveMessage) { IsBackground = true }.Start(); return 1; } private void ReceiveMessage() { while (true) { //接收数据 EndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);//j远端ip和端口,这里设定成所有的ip和端口 byte[] data = new byte[1024]; int length = udpServer.ReceiveFrom(data, ref remoteEndPoint);//程序运行到这里是会停顿的 string message = Encoding.UTF8.GetString(data, 0, length);//从索引0开始接收 Console.WriteLine("发送方ip:" + (remoteEndPoint as IPEndPoint).Address.ToString() + "-------发送方端口:" + (remoteEndPoint as IPEndPoint).Port + "-------消息内容:" + message); } } } }

 

结果:

 

 

 

 

 

第二种:

服务器:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace udpServer
{
    //udp服务器
    class Program
    {
        static void Main(string[] args)
        {
            UdpClient udpClient = new UdpClient(new IPEndPoint(IPAddress.Parse("192.168.1.104"), 3333));

            IPEndPoint point = new IPEndPoint(IPAddress.Any, 0);
            while (true)
            {
                byte[] data = udpClient.Receive(ref point);
                string message = Encoding.UTF8.GetString(data);
                Console.WriteLine("发送方ip:" + (point as IPEndPoint).Address.ToString() +
                    "-------发送方端口:" + (point as IPEndPoint).Port +
                    "-------消息内容:" + message);
            }

            //别忘了关闭
            //udpClient.Close();
        }
    }
}

 

客户端:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace udpClient
{
    //udp客户端
    class Program
    {
        static void Main(string[] args)
        {
            
            UdpClient udpClient = new UdpClient();

            Console.WriteLine("请输入要发送的内容:");
            while (true)
            {
                string message = Console.ReadLine();
                byte[] data = Encoding.UTF8.GetBytes(message);
                udpClient.Send(data, data.Length, new IPEndPoint(IPAddress.Parse("192.168.1.104"), 3333));
            }
            //别忘了关闭
            //udpClient.Close();

        }
    }
}

 

posted on 2020-07-26 01:52  炼金师  阅读(325)  评论(0编辑  收藏  举报

导航