是否可以在WSL环境之外可访问的WSL中​​创建虚拟串行端口?

时间:2019-01-23 21:43:06

标签: windows serial-port windows-subsystem-for-linux

我有一个串行设备,我正在使用socat通过网络桥接从Linux机器到Windows机器上运行的WSL。在WSL方面,是否可以使socat创建的虚拟串行端口对WSL以外的Windows上运行的应用程序可见?

我有一个使用HW虚拟串行端口的解决方案,但我很好奇是否有一种方法可以完全从WSL进行。

1 个答案:

答案 0 :(得分:1)

这些不是直接的解决方案,但我希望它们会有所帮助。

没有答案,但是有一个类似的问题。
Issue passing valid command-line arguments for socat


此后,似乎它由Insider Build 17063/17093的Build 17107支持。
AF_UNIX comes to Windows

  

不支持\不可用:
  综上所述,以下Windows unix套接字功能当前在Windows unix套接字实现中不可用或不受支持。

     
      
  • AF_UNIX数据报(SOCK_DGRAM)或序列包(SOCK_SEQPACKET)套接字类型。
  •   
  • 辅助数据:Linux的unix套接字实现支持在套接字上传递辅助数据,例如传递文件描述符(SCM_RIGHTS)或凭据('SCM_CREDENTIALS`)。 Windows unix套接字实现中不支持辅助数据。
  •   
  • 自动绑定功能(有关详细信息,请参见“ sockaddr_un”部分)。
  •   
  • 套接字对:Winsock 2.0中不支持套接字对套接字API。
  •   

Windows/WSL Interop with AF_UNIX

  

要求与限制:

     
      
  1. WSL Unix套接字只能与Win32 Unix套接字或WSL Unix套接字通信,而不能同时与两者通信。例如,WSL Unix套接字服务器只能接受来自WSL Unix套接字或Win32 Unix套接字的连接。那么,如何确定是哪一个呢?它基于套接字绑定到或连接到的路径,如bindconnect系统调用中所指定。如果Unix套接字路径是DrvFS路径(即,您在WSL中安装的系统卷,例如:/ mnt / c,/ mnt / d等),则它只能与Windows Unix套接字通信。如果该路径是LxFS路径(即WSL中Linux安装的卷,例如:/ home,/ var,/ usr等),则它只能与WSL Unix套接字通信。
  2.   
  3. 要使WSL Unix套接字与Windows Unix套接字建立连接,创建套接字后的第一个操作应该是绑定或连接。套接字上的任何其他操作都将使其变为专有的WSL Unix套接字,该套接字只能与其他WSL Unix套接字通信。
  4.   
  5. 由于Windows Unix套接字实现当前不支持传递辅助数据,例如SCM_RIGHTS等,因此通过Unix套接字进行Win32 <-> WSL互操作也将不支持辅助数据。
  6.   

socat not working complaining about tsetaddr #2552 Closed

您所说的可能是硬件虚拟串行端口。
COM Port Access in WSL #1929 Closed

此后,套接字关系似乎有各种修改。
Release Notes for Windows Subsystem for Linux


使用socat的其他程序似乎也可以运行,但有些似乎不稳定。
WSLから pageant を利用する
benpye/wsl-ssh-pageant

jstarks/npiperelay

Use an ssh-agent in WSL with your ssh setup from windows 10
How to use GPG with YubiKey (bonus: WSL)