通过 tcp 套接字向 Dart 中的远程运行进程发送和接收数据

问题描述

目前只是在使用 Dart 来尝试创建一个简单的用例。目标是在 Windows 系统上运行选择的命令行进程,然后通过标准 tcp 套接字与它远程交互。本质上,我是在 Windows 机器上运行已编译的 Dart 二进制文件,并在 Linux 机器上监听响应。

这是我缓慢形成的代码所在的位置:

import 'dart:io';
import 'dart:async';
import 'dart:convert';

void main() async {
   Socket s = await Socket.connect("192.168.1.2",8000);
   var process = await Process.start("cmd.exe",[]);
   process.stdout
        .transform(utf8.decoder)
        .listen((output) { s.write(output); s.flush(); });
        stdin.pipe(s.stdin);

在主机上运行此代码的已编译二进制文件会将 cmd 提示发送到我的侦听器,但不会接受来自侦听器的任何命令(我显然希望在所选进程中执行)。我可以在主机上输入命令,它们会很高兴地将命令发送到侦听器,但是我一直在思考如何在连接的远程主机端输入数据,以便通过套接字发送并由进程执行,返回响应。

我的问题是我正在读取进程的 stdin(即第 11 行的 stdin.pipe(s.stdin)),这就是为什么我在主机上输入的任何内容都会被执行并返回给侦听器,但是我需要套接字来侦听来自侦听器的数据,将其提供给进程,然后通过套接字将输出返回给侦听器。在我的脑海中很简单,只是在 Dart 中不行!

我查看了 https://api.dart.dev/stable/2.12.1/dart-io/dart-io-library.html 和一系列其他资源,寻找将 process.start 与 tcp 套接字集成的示例。有很多客户端/服务器代码示例,但没有一个像我所看到的那样将本机进程集成到组合中。

热衷于建议/指点。

谢谢, 酱汁

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)