Linux 上通过以太网传输的串行数据

Linux 上通过以太网传输的串行数据

我正在尝试通过以太网(串行到以太网)将小部件(192.168.1.214:20108)连接到Linux盒子。

在 Windows 下使用虚拟设备驱动程序映射我可以看到串行数据,所以我知道串行到以太网的小部件正在工作。

现在,当我指向 Linux 机器时,我得到的只是使用 tcpdump 时的连接尝试:

21:00:07.322019 IP 192.168.1.214.20108 >development.local.8234:标志[R],seq 4096,win 0,长度0

因此,以太网数据包正在通过,但我找不到将串行数据(通过端口 8234 以太网)映射到设备的方法。许多变体socat不会在屏幕上产生任何数据,例如:

$ sudo socat readline TCP-LISTEN:8234,bind=127.0.0.1

或尝试将其绑定到开发人员:

$ socat -d -d -d tcp-l:127.0.0.1:8234,reuseaddr,fork file:/dev/tty0,nonblock,waitlock=/var/run/tty0.lock

输出为:

2013/11/11 21:19:41 socat[23757] I setting option "so-reuseaddr" to 1
2013/11/11 21:19:41 socat[23757] I setting option "fork" to 1
2013/11/11 21:19:41 socat[23757] I socket(2, 1, 6) -> 3
2013/11/11 21:19:41 socat[23757] I starting accept loop
2013/11/11 21:19:41 socat[23757] N listening on AF=2 0.0.0.0:8234

我完全不知道如何在 Linux 机器上通过以太网读取串行数据。

答案1

浏览 Stackoverflow 我发现这个问答标题为:linux环境下串口数据转换为TCP/IP。具体来说,该问题的答案之一突出显示了两种听起来像您正在寻找的工具:

  • ser2net - 串行到网络代理 (ser2net)

    ser2net 为用户提供了一种从网络连接到串行端口的连接方式。我尝试了所有我能找到的其他方法,但发现它们缺乏,所以我自己写了。它提供了所有串行端口设置、用于配置端口的配置文件、用于修改端口参数的控制登录、监视端口和控制端口。

  • remtty - 远程 tty

    remtty(“remote tty”的缩写)使 TCP 连接可用作伪 tty。它允许您使用可直接访问调制解调器的访问服务器(例如 Cisco NAS)作为普通拨出调制解调器来发送传真、发送短信或访问 BBS。它提供与 Cisco 的 Dialout Utility 类似的功能,但运行在 GNU/Linux 而不是 Windows 上。

您可能还想查看此文档,其中讨论了如何使用socat它,我希望能够准确地完成您想要做的事情。

该页面的摘录

- You have a host with some serial device like a modem or a bluetooth interface
(modem server)
- You want to make use of this device on a different host. (client)

1) on the modem server start a process that accepts network connections and
links them with the serial device /dev/tty0:

$ socat tcp-l:54321,reuseaddr,fork \
     file:/dev/tty0,nonblock,waitlock=/var/run/tty0.lock

2) on the client start a process that creates a pseudo tty and links it with a
tcp connection to the modem server:

$ socat pty,link=$HOME/dev/vmodem0,waitslave tcp:modem-server:54321

NETWORK CONNECTION

There a some choices if a simple TCPv4 connection does not meet your
requirements:
TCPv6: simply replace the "tcp-l" and "tcp" keywords with "tcp6-l" and "tcp6"
Socks: if a socks server protects the connection, you can replace the
"tcp:modem-server:54321" clause with something like
"socks:socks-server:modem-server:54321" or 
"socks:socks-server:modem-server:54321,socksport=1081,socksuser=nobody"

SECURITY

SSL
If you want to protect your server from misuse or your data from sniffing and
manipulation, use a SSL connection with client and server authentication
(currently only over TCPv4 without socks or proxy). 
See <a href="socat-openssl.txt">socat-openssl.txt</a> for instructions.

IP Addresses
!!! bind=...
!!! range=...
!!! lowport (for root)
!!! sourceport
!!! tcpwrap=

FULL FEATURES
$ socat -d -d ssl-l:54321,reuseaddr,cert=server.pem,cafile=client.crt,fork \
     file:/dev/tty0,nonblock,echo=0,raw,waitlock=/var/run/tty0.lock

TROUBLESHOOTING
-v -x

相关内容