두 응용 프로그램 중 하나는 클라이언트이고 다른 하나는 서버입니다. 서버는 클라이언트를 서브 스레드로 시작합니다. 클라이언트는 표준 출력을 통해 명령을 출력합니다. 서버는 명령과 응답을 기다립니다.스레드를 사용하여 명령 줄에서 클라이언트/서버 응용 프로그램 통신 C++
기본적으로 표준 출력을 통한 클라이언트 서버. 예를 들어
:
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}
문제는 내가 서버 있도록 함께 두 개의 응용 프로그램을 연결하고 읽기 및 클라이언트 응용 프로그램에 응답하는 방법을 모른다는 것이다.
커맨드 라인을 통신 레이어로 사용하는 이유는 클라이언트 생성을 가능한 한 쉽게 유지하기 위해서입니다.
또한 한 번에 하나 이상의 클라이언트가있을 수 있습니다. 클라이언트는 서로 상호 의존적으로 서버와 통신 할 수 있어야합니다. (그들은 서로의 통신을 볼 수 없어야합니다)
현재 CreateProccess() 함수를 통해 응용 프로그램을 시작하고 있습니다. 이 기능을 사용하면 응용 프로그램의 초기 명령 행 매개 변수를 쉽게 설정할 수 있습니다. 그 이후의 의사 소통이 아닙니다.
내 질문은 :
- 어떻게 스레드로 클라이언트 응용 프로그램을 시작하는 서버 응용 프로그램은 클라이언트 표준 출력을 쓰기/읽기는 무엇입니까?
가장 먼저해야 할 일은 [파이프를 C++로 만드는 법]입니다 (http://stackoverflow.com/questions/5840109/how-to-make-a-pipe-in -c) – Kiril
stdout을 리다이렉션하는 것은 명명 된 파이프를 사용하는 길고 힘든 방법입니다. CreateProcess()를 이미 사용하고 있다면이 SDK 기사를 참고하십시오 : http://msdn.microsoft.com/en-us/library/windows/desktop/aa365590%28v=vs.85%29.aspx –
당신은 ' 쓰레드를 사용할 때'stdout' /'stdin'을 실제로 사용합니다. 클라이언트를 별도의 _process_에 넣으면 작동하지만 좋은 디자인이라고 부르지는 않습니다. 대신 파이프 나 소켓과 같은 다른 통신 방법을 살펴보아야합니다. 그러면 클라이언트가 서버의 일부가 아닌 _ 미래에 도움이됩니다. –