3

我有两个应用程序,一个是客户端,另一个是服务器。服务器将客户端作为子线程启动。然后客户端通过其标准输出输出其命令。服务器等待命令并相应地响应。

基本上客户端服务器通过标准输出。

例如:

client >> Move north
Server >> Your new location is {2,3} 
client >> Move north
Server >> Your new location is {2,2} 
client >> Shoot east 
Server >> Projectile 66638 heading east {3,2}

问题是我不知道如何将两个应用程序连接在一起,以便服务器读取并响应客户端应用程序。

我想使用命令行作为通信层的原因是我想让客户端的创建尽可能简单。

一次也可能有多个客户端,客户端应该能够相互依赖地与服务器通信。(他们应该不能看到彼此的通信)

目前我正在通过CreateProcess () 函数启动应用程序。此功能可以轻松设置应用程序的初始命令行参数。只是没有之后的交流。

我的问题是:

  • 将客户端应用程序作为线程启动的服务器应用程序如何读取/写入客户端标准输出?
4

1 回答 1

0

正如上面的评论者指出的那样,命名管道(或套接字)是这种解决方案的方法,它可能是您想要的两个独立进程,而不是线程。

在 Windows 中,TransactNamedPipe()系统调用可以帮助你完成你想要的。它非常适合向服务器发送命令并等待响应,从而可以轻松创建一个客户端,该客户端执行与对服务器的(同步)远程过程调用非常相似的操作。

于 2012-11-05T19:40:59.157 回答