zoukankan      html  css  js  c++  java
  • 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();
    
            }
        }
    }
  • 相关阅读:
    mac下完全卸载程序的方法
    Mac下检测NSTableView的滑动事件的方法
    一行代码起动全屏
    Unsupported compiler '4.0' selected for architecture 'i386'类错误解决办法
    编译错误“The run destination My Mac 64bit is not valid for Running the scheme '***',解决办法
    ios项目中导入百度地图SDK出错的问题
    Unable to resolve target 'android9'解决办法
    ios保存录制好的视频到相簿的方法
    NSTableView系列之代码创建(不用nib)
    谈内链优化不是每个站点都能做的
  • 原文地址:https://www.cnblogs.com/Transmuter/p/13379027.html
Copyright © 2011-2022 走看看