2015-02-01 3 views
0

웹 페이지의 C++ 프로그램에서 처리 된 일부 값을 표시하고 싶습니다.이 정보는 많은 클라이언트에서 열어야하며 웹 페이지는 내 응용 프로그램에 필수 항목이 아니어야합니다.C++ 실행 스레드가있는 라즈베리 파이

나는이 문제를 해결하는 데 미쳐지기 때문에이 요구 사항을 설명했다 : 나는 cgi에 관한 많은 샘플을 발견했는데, 어떻게 작동하는지, 그리고 웹에서 호출 한 프로세스이기 때문에 내 범위가 충분하지 않다는 것이 분명하다. 내 응용 프로그램과 연결되어 있지 않습니다. 내 메인 CGI 프로그램으로 수 없다, 심지어는 웹 페이지가 열리지 않을 실행해야합니다 (선택적이어야합니다).

그럼 어떻게 cgi 프로그램과 내 메인 C++ 프로그램간에 데이터를 공유 할 수 있습니까?

파일이나 데이터베이스에 저장하는 것이 실제로 유일한 방법입니까?

마지막으로 나에게 필요한 것은 "get"과 "post"정보를 가로 채거나 웹 서버 (서버 코드 스크립트)에서 내 기능을 호출하는 것입니다. 이 단방향 시스템의 경우

감사 안드레아

+0

"wall of text"- 약간 부셔 라. 일단 그렇게했다면 심호흡을하고 전체 설정이 무엇인지 설명하십시오. 파이가 인터넷에 연결되어 있고'http : // AndreasRaspberryPi/'를 입력하면 페이지에 예쁜 색상으로 된 숫자가 나타나게하거나 somhere와 다른 웹 서버가 연결되게합니다. 너의 파이? –

+0

raspy가 내 홈 네트워크에 연결되어 있습니다. 다음 단계는 웹에 게시 할 예정입니다. 그러나 잠시 후 제발, 우리는 열악한 브라우저 나 내 컴퓨터에 연결된 웹 브라우저에서 내 웹 페이지를 열어 볼 수 있습니다. 네트워크 ... 당신이 장치의 IP를 입력하는 것처럼. –

+0

데이터는 얼마나 자주 변경됩니까? 정적 페이지 [시간 초과 자동 재로드가있는 웹 서버]를 설정하고 업데이트해야 할 때 이전 페이지를 새로운 페이지로 원자화하여 교체하는 "이름 바꾸기"를 수행 할 수 있습니까? 또는 액세스에 밀리 초 정밀도가 필요합니까? –

답변

1

(예를 들어 데이터가 웹 사이트에서 사용자에게 C++ 프로그램에서만 흐름이 아닌 C++ 프로그램의 웹 사이트에서), 다음 가장 쉬운 방법은 것 파일 또는 바람직하게는 데이터베이스에 기록하는 것.

the MySQL connector과 같은 것을 사용하여 C++ 코드에서 DB에 쓸 수 있으며, DB의 데이터를 표시하는 기본 웹 사이트는 Apache 서버의 PHP로 매우 빠르게 작성 될 수 있습니다.

또 다른 솔루션은 새로운 데이터가 생성 될 때마다 C++ 프로그램에서 직접 HTML 파일에 출력을 쓰는 것입니다. 데이터를 요청하는 사용자는 서버에 액세스하여 HTML 파일에서 최신 데이터를 가져올 수 있습니다.

+0

필자가 작성한 것처럼 파일이나 데이터베이스를 작성하지 않고 다른 방법을 찾고 있는데 웹 서버와 실행중인 프로그램 사이의 통신 일뿐입니다. 유일한 방법 인 경우 .. 확인 ...하지만 이상합니다 .. –

1

내가 수행 할 방법은 파일을 측정하고 파일에 데이터를 출력하는 작은 프로그램을 사용하는 것입니다. mv 또는 rename을 사용하여 파일이 자동으로 대체되도록하십시오.

프로그래밍 기능이있는 웹 서버를 사용하십시오 (PHP는 알고 있지만 Java, Java Script, Python, C, C++ 또는 다른 언어를 사용할 수 있음).

당신이 완전히 다른 기준을 제시하지 않는 한, 일을 끝내는 데있어 단순한 것보다 복잡하다는 것이 더 좋습니다. 일단 작동하면, 그걸로 바이올린을 만들거나 완전히 다시 만들고 만들 수 있습니다. 더 나은,하지만 적어도 당신은 뭔가를 먼저 작동합니다.

요청은 POST 또는 URL 인수로 보내지는 응용 프로그램의 구성 파일에 저장할 수 있습니다 ("기능 3"을 사용하려면 http://example.com/mypage.php?function=3 등을 사용합니다).

이것은 유일한 방법은 아니며 많은 해결책이 있습니다. 그러나 이것은 간단한 방법으로 문제를 해결하고 "절대적으로"안정적으로 일하지 못하게하는 몇 주간의 해결책이 아니라 이번 주말에 해결되고 안정적으로 작동하게됩니다.

의견에서 "공유 메모리를 사용할 수 있습니다"라고 제안했습니다. 당신이 그렇게하는 것이 내 제안이 아닙니다. 사용하기가 매우 어렵고 데이터가 원자 적으로 업데이트되었는지 절대적으로 확신해야합니다. 그렇지 않으면 데이터의 일부가 하나의 업데이트에 속하고 다른 하나는 이전 업데이트에 속해서 매우 혼란 스럽습니다. 공유 메모리 동기화 작업을 시도하는 데 며칠 또는 몇 주를 보내고 싶지 않습니다.웹 서버와 응용 프로그램 사이에서 실제로 통신해야하는 경우 양식 2 (이름이 지정된?) 파이프를 사용하여 응용 프로그램에 요청을 보내고 응답을 다시 보냅니다.