为了账号安全,请及时绑定邮箱和手机立即绑定

使用 golang 在 Windows 中的端口上启动服务器可执行文件

使用 golang 在 Windows 中的端口上启动服务器可执行文件

Go
慕丝7291255 2023-07-26 17:04:13
我正在尝试使用 golang 在 Windows 计算机上的不同端口上启动多个服务器。这是出于内部测试目的。所以最终结果是有一个可执行文件,它将在多个端口上启动我的服务器的多个实例(另一个 Windows 可执行文件)。我理想的方法是让“n”个 go 例程在从“port+0”到“port+n”的端口上启动命令“myserver.exe .\config.json port+n”,这样我就可以“ n" 服务器已启动并正在运行。我正在想办法启动我的服务器并继续监听,直到我希望程序结束。我的服务器是一个 Windows 可执行文件,它在启动它时提到的端口上运行。当我手动启动它时它工作正常。它可以启动为:C:\Install\myServer.exe C:\Install\Configuration.json 8079上面的命令启动服务器并侦听端口 8079。我想在不同端口上启动同一服务器的多个实例。我按照 golang 程序编写的代码不适用于 Windows 服务,https://github.com/kardianos/service如下。我可以看到启动服务器的命令已执行,但当我打开 services.msc 时,我看不到任何服务,当我执行 get-service powershell 命令时,我也看不到任何服务。我还尝试在通过 go 程序启动后查看是否可以监听端口 8079(在本例中),看看是否得到任何响应,但出现以下错误:panic: Get http://localhost:8079/config: dial tcp [::1]:8079: connectex: No connection could be made because the targetmachine actively refused it.上述代码的输出:Main RunCreating the command C:\Install\myServer.exe C:\Install\Configuration.json 8079Starting the commandout: Microsoft Windows [Version 6.3.9600](c) 2013 Microsoft Corporation. All rights reserved.
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

我必须在命令中使用 /c 才能在 Windows 中的 bash 中执行该命令。如果没有该命令,则不会执行。


command := []string{"/c", "C:\\Install\\Build\\server.exe start " }

out, err := ExecuteCommandInWindows(command, "run")

if err != "" {

    fmt.Println(err, len(err))

}else{

    fmt.Println(out)

}


查看完整回答
反对 回复 2023-07-26
  • 1 回答
  • 0 关注
  • 234 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号