繁体   English   中英

macOS-使用“ Process”将其远程登录到IP地址并传递命令

[英]macOS - Use `Process` to telnet to an IP address and pass commands

我正在开发一个macOS应用程序,该应用程序需要使用telnet连接到设备并向其发送命令。

(顺便说一句,我正在连接Roku)

据我所知

func telnet(to host: String, port: String) {
    let process = Process()
    let pipe = Pipe()

    process.executableURL = URL(fileURLWithPath: "/usr/local/bin/telnet")
    process.arguments = [host, port]
    process.standardOutput = pipe

    do {
        try process.run()
    } catch {
        return
    }

    let resultData = pipe.fileHandleForReading.readDataToEndOfFile()
    let result = String (data: resultData, encoding: .utf8) ?? ""
    print(result)
}

telnet(to: "10.0.1.11", port: "8080")

问题是该流程立即关闭。 我需要将进程保持打开状态,并以某种方式将命令发送到设备,然后关闭连接。

这些是我的问题:

  1. 如何使流程继续运行?
  2. 如何通过telnet连接将命令发送到设备?

最好的选择是避免使用Process并直接从您的应用程序建立网络连接。 (这还将使您摆脱对/usr/local/bin/telnet依赖,该依赖关系在macOS的全新安装中不存在。)

SwiftSocket容器看起来是一种很好的方法。 文档中的“客户端套接字示例”似乎涵盖了您的大多数问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM