首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以使用Linux中的dotnet核心套接字访问SocketCan吗?

可以使用Linux中的dotnet核心套接字访问SocketCan吗?
EN

Stack Overflow用户
提问于 2019-08-08 16:06:18
回答 1查看 213关注 0票数 0

我在Linux平台上使用dotnet核心,希望设置与CAN设备的通信。SocketCan在Linux平台上是可用的,但是有没有办法使用dotnet核心中的UnixDomainSocketEndPoint和Socket类来直接访问SocketCan呢?

在Linux (Debian9)环境下尝试使用此测试程序创建Socket实例时:

代码语言:javascript
复制
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)
                { }
            }
        }
    }
}

输出为:

代码语言:javascript
复制
$ 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套接字匹配?

EN

回答 1

Stack Overflow用户

发布于 2020-02-17 16:10:36

在.NET核心3.0+上有AddressFamily.ControllerAreaNetworkProtocolFamily.ControllerAreaNetwork,而SocketCAN需要一个SocketType.Raw才能工作。在https://github.com/dotnet/corefx/pull/37315查看关联的拉取请求

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57407957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档