2017-08-18 2 views
0

Ich versuche eine kleine Anwendung zu erstellen, die Daten vom Serial-/Com-Port liest und die Daten über den Port 15000 an mein Netzwerk sendet.Zugriff verweigert beim Senden von Daten mit UdpClient

Alles funktioniert unter Windows und Linux (mit Mono) in Ordnung, aber ich Socket Exception auf macOS mit folgenden Meldung: Access denied

Ich habe versucht, meine Anwendung mit erhöhten Berechtigungen auszuführen:

sudo mono ./SerialMonitor.exe

Aber das funktioniert auch nicht.

Gibt es eine Möglichkeit, diese Ausnahme loszuwerden? Und warum funktioniert es ohne Probleme unter Windows und Linux?

Hier ist mein Code:

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; 
       } 
      } 
     } 
    } 
} 

ich Visual Studio Gemeinschaft 2017 für Mac bin mit

Version 7.1 (Build 1297)

Mono 5.2.0.215 (D15-3/da80840) (64-Bit)

Projektkonfiguration:

FRAMEWORK 4 .6.1

x86

Antwort

Verwandte Themen