2017-08-18 6 views
0

Serial/Com-Portからデータを読み取り、ポート15000を使用してネットワークにデータをブロードキャストする小さなアプリケーションを作成しようとしています。私は昇格権限で自分のアプリケーションを実行しようとしたAccess deniedUdpClientでデータを送信するときにアクセスが拒否されました

sudoのモノ

すべてが(モノを使用して)、WindowsおよびLinux上で正常に動作しますが、私は次のメッセージをMacOSでSocket Exceptionを取得します./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; 
       } 
      } 
     } 
    } 
} 

私は、Mac

バージョン7.1(1297をビルドする)

モノ5.2.0.215(D15-3/da80840)のためのVisual Studioのコミュニティ2017を使用しています(64ビット)

プロジェクトの構成:

.NET Framework 4 .6.1

のx86

答えて

1

あなたは(一般的にまたは放送)ローカルサブネット全体にブロードキャストメッセージを送信したい場合は、あなたとあなたのソケットでブロードキャストを有効にする必要があります:

mNetwork.EnableBroadcast = true; 

参考:

https://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient(v=vs.110).aspx

http://answers.unity3d.com/questions/248494/socket-exception-access-denied.html

関連する問題