gpt4 book ai didi

c# - 使用 UdpClient 发送数据时访问被拒绝

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:10 24 4
gpt4 key购买 nike

我正在尝试创建一个小型应用程序,它从串行/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(内部版本 1297)

单声道 5.2.0.215 (d15-3/da80840)(64 位)

项目配置:

.NET 框架 4.6.1

x86

最佳答案

如果你想通过你的本地子网发送广播消息(或者一般的广播)你必须在你的套接字上启用广播:

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

关于c# - 使用 UdpClient 发送数据时访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45760796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com