0

Linux プラットフォームで dotnet コアを使用しており、CAN デバイスとの通信をセットアップしたいと考えています。SocketCan は Linux プラットフォームで利用できますが、dotnet コアの UnixDomainSocketEndPoint および Socket クラスを使用して SocketCan に直接アクセスする方法はありますか?

Linux (Debian9) 環境でこのテスト プログラムを使用して Socket のインスタンスを作成しようとすると、次のようになります。

using System;
using System.Net.Sockets;

namespace SocketScan
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Scan for available ProtocolType values");

            ScanForProtocolTypes(SocketType.Stream);
            ScanForProtocolTypes(SocketType.Raw);
        }

        private static void ScanForProtocolTypes(SocketType socketType)
        {
            for (var i = 0; i < 1000000; i++)
            {
                try
                {
                    var socket = new Socket(AddressFamily.Unix, socketType, (ProtocolType)i);
                    Console.WriteLine($"Succeeded creating socket with SocketType={socketType} ProtocolType={((ProtocolType)i)}");
                }
                catch (SocketException)
                { }
            }
        }
    }
}

出力は次のとおりです。

$ dotnet run SocketTest.csproj 
Scan for available ProtocolType values
Succeeded creating socket with SocketType=Stream ProtocolType=Unspecified
Succeeded creating socket with SocketType=Stream ProtocolType=Icmp
Succeeded creating socket with SocketType=Raw ProtocolType=Unspecified
Succeeded creating socket with SocketType=Raw ProtocolType=Icmp

列挙型 AdressFamily、SocketType、および ProtocolType のどの値が SocketCan ソケットに一致しますか?

4

1 に答える 1