使用UdpClient发送数据时出现访问被拒绝的错误

5
我正在尝试创建一个小应用程序,从串行/COM端口读取数据,并使用端口15000将数据广播到我的网络。
在Windows和Linux上(使用Mono)一切正常,但在macOS上出现Socket Exception,并显示以下消息:Access denied 我尝试以提升的权限运行应用程序:

sudo mono ./SerialMonitor.exe

但这也没有起作用。
有没有什么方法可以摆脱这个异常?为什么在Windows和Linux上没有任何问题?
这是我的代码:
using System;
using System.IO.Ports;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace SerialMonitor
{
    class MainClass
    {
        static SerialPort mSerial = new SerialPort();
        static String[] mSerialPorts;
        static UdpClient mNetwork;
        static IPEndPoint mIP;

        static String mData = "";

        public static void Main(string[] args)
        {
            mNetwork = new UdpClient();
            mIP = new IPEndPoint(IPAddress.Parse("192.168.1.255"), 15000);

            mSerialPorts = SerialPort.GetPortNames();

            Console.WriteLine("Select a serial port:");
            if (mSerialPorts.Length == 0)
            {
                Console.WriteLine("No serial ports available!");
                return;
            }
            for (int i = 0; i < mSerialPorts.Length; i++)
            {
                Console.WriteLine(i + 1 + ": " + mSerialPorts[i]);
            }
            Console.Write("Selection: ");
            int selection = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Selected port: " + mSerialPorts[selection - 1]);

            mSerial.PortName = mSerialPorts[selection - 1];
            mSerial.BaudRate = 9600;
            mSerial.NewLine = "\r\n";
            mSerial.Open();
            mSerial.DiscardInBuffer();

            Console.WriteLine("\nData:");

            while (true)
            {
                try
                {
                    MainClass.mData = mSerial.ReadLine();
                    Console.WriteLine(MainClass.mData);

                    byte[] bytes = Encoding.ASCII.GetBytes(MainClass.mData);
                    mNetwork.Send(bytes, bytes.Length, mIP);
                }
                catch(SocketException ex)
                {
                    Console.WriteLine("\nNETWORK ERROR: " + ex.Message);
                    Console.Read();
                    return;
                }
                catch (Exception ex)
                {
                    Console.WriteLine("\nERROR: " + ex.Message);
                    Console.Read();
                    return;
                }
            }
        }
    }
}

我正在使用 Visual Studio Community 2017 for Mac 版本7.1 (build 1297) 和 Mono 5.2.0.215 (d15-3/da80840) (64-bit)进行开发。
项目配置如下:
.NET Framework 4.6.1
x86
1个回答

10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接