首页 文章

带有虚拟tty链接和fork的socat删除了我的pty链接

提问于
浏览
2

我要求能够将tcp连接复用到单个虚拟tty,以测试通过串行端口进行通信的软件 . 我一直在使用以下命令创建一个侦听tcp端口的服务器,然后将数据转发到PTY .

socat -d -d PTY,link=/dev/ttyV1,waitslave,echo=0,raw TCP-LISTEN:11313,reuseaddr,fork

我的问题是当端口11313上的tcp客户端断开连接时,socat删除了我的链接到/ dev / ttyV1,从而将会话杀死给所有连接的人 .

有没有办法保留这个链接?或者也许在socat之外创建一个伪tty,以便我不必担心维护它?我试过/ dev / tty1和/ dev / ttyS1,我没有运气 . 我对这些的命令是:

socat -d -d file:/dev/tty1,nonblock,echo=0,raw TCP-LISTEN:11313,reuseaddr,fork

我的要求:能够将一个软件连接到一端的串口tty,然后在另一端连接多个tcp客户端 . Tcp客户端消息传递被正确地序列化和多路复用,以便消息不会彼此叠加 .

2 回答

  • 4

    为什么不使用“unlink-close = 0”?

    例如

    socat -d -d PTY,link=/dev/ttyV1,waitslave,echo=0,raw,unlink-close=0 TCP-LISTEN:11313,reuseaddr,fork
    
  • 3

    好吧,我似乎找到了自己的解决方案 . 您必须首先创建一个虚拟零调制解调器对,然后打开虚拟零调制解调器对的一端并将其与TCP侦听器链接 .

    socat -d -d PTY,raw,echo=0,link=/dev/ttyVA00 PTY,raw,echo=0,link=/dev/ttyVB00
    

    然后

    socat -d -d open:/dev/ttyVA00,nonblock,echo=0,raw TCP-LISTEN:11313,reuseaddr,fork
    

    我可以连接尽可能多的客户端,一切似乎都在工作 .

相关问题