2011-10-31 3 views
0

나는 OpenWRT 스타일 라우터에 간단한 어플리케이션을 가지고있다. 현재 C++로 작성되었습니다. 라우터 (임베디드 리눅스)는 디스크 공간과 RAM이 매우 제한되어 있습니다. 예를 들어 파이썬을 설치할 공간이 충분하지 않습니다.간단한 리눅스 API 만들기

그래서 네트워크를 통해이 데몬 응용 프로그램을 제어하려고합니다. 나는 소켓 생성에 대한 튜토리얼을 읽었고 포트에 대한 활동을 들었다. 그러나 C++ 클래스에 플로우를 통합 할 수 없었습니다. 그리고 나는받은 정보를 해독하는 방법이나 응답을 보내는 방법을 파악할 수 없었습니다.

내가 읽은 모든 자습서는 막 다른 골목 들이며, 뭔가를받을 때까지 기본적으로 차단하는 서버를 만드는 방법을 보여줍니다. 그런 다음 뭔가가있을 때 메시지를 반환합니다.

이런 종류의 일에 사용할 수있는 좀 더 높은 레벨이 있습니까?

답변

1

"내가 고객의 요청을 받아들이고 응답으로 간단한 네트워크 서비스를 구축하는 방법은 무엇입니까?" 여기에는 많은 부분이 있습니다. 서비스 프레임 워크를 어떻게 구축하고, 요청을 어떻게 인코딩하고 디코딩합니까? 요청을 어떻게 처리하며 어떻게 모두 묶어 놓습니까?

첫 번째 부분과 마지막 부분에 문제가있는 것 같습니다. 스레드 접근 방식과 이벤트 접근 방식과 같은 간단한 서비스를 구성하는 두 가지 기본 방법이 있습니다.

스레드 방식에서는 들어오는 연결마다 스레드를 만듭니다. 이 스레드는 해당 연결 (파일 설명자)에서 메시지 (요청)를 읽고 처리하며 응답을 다시 씁니다. 연결이 끊어지면 스레드가 종료됩니다. 들어오는 연결을 허용하고 각각을 처리 할 새 스레드를 만드는 주 '수신 대기'스레드가 있습니다.

이벤트 접근 방식에서 들어오는 각 요청은 이벤트가됩니다. 그런 다음 이러한 이벤트를 처리하고 응답을 보내는 이벤트 핸들러가 있습니다. 이벤트 핸들러가 즉시 차단하고 완료하지 않는 것이 중요합니다. 그렇지 않으면 서비스가 잠긴 것처럼 보일 수 있습니다. 프로그램에는 들어오는 이벤트 (일반적으로 단일 poll 또는 select 호출로 차단)를 기다리는 기본 이벤트 루프가 있으며 각 이벤트를 적절히 읽고 발송합니다.

+0

당신이 좋은 대답을 해줄 수는 있지만, 이것을 구축하는데 약간의 시간을 절약 할 수있는 뭔가가있을 것으로 기대하고 있습니다. URL 요청이 추상화되고 다소 보살펴지는 iOS와 같았 으면 좋겠습니다. 나는 그런 일을 구현하는 1000 번째 인물이 될 것 같은 기분이 든다. – napierzaza

0

나는 소켓과 스레드를 지원하는 opkg로 python-mini 패키지를 설치했습니다. 역화/10.03.1이있는 WRT160NL에서 매력처럼 작동합니다.