2009-12-18 8 views
0

C/C++로 작성된 소켓 프로그램간에 XML schema의 형식으로 데이터를 교환하려고합니다. 소켓 프로그램간에 XML 스키마를 교환하는 프로세스를 설명하는 링크 자습서를 제공해 줄 수 있습니까?소켓을 통해 XML로 데이터를 전달하는 방법은 무엇입니까?

나는 C/C++로 작성된 소켓 프로그램과 결합 된 서로 다른 운영 체제에서 실행되는 두 개의 소프트웨어 도구를 가지고 있습니다. XML과 같이 작동하므로 시뮬레이션 연구를 실행하기 위해 XML 문서 형식으로 데이터를 교환하는 간단한 방법이 있는지 알고 싶습니다.

미리 감사드립니다.


질문은 C/C++로 작성된 소켓 프로그램을 통해 xml 스키마를 보내는 방법입니까?

----- XML ​​---
...
<xs:element name="zone">
<xs:complexType>
<xs:sequence>
<xs:element name="Var_name" type="xs:string"/>
<xs:element name="var_value" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>

: 여기에 특급입니다3210

------ C/C++ ----
...
//
COUT (BUFSIZE, 0)>을 BUFSIZE (csocket 보내 buffer_snd)
경우 서버에 메시지를 전송 < < send()가 실패했습니다. < < endl; 그게 당신이 비록 찾고있는 거라면
... 당신의 도움을 잘 부탁 드리겠습니다

, 분명히

+0

당신이 요구 사항에 대한 구체적 할 수 보낼 수있는 좋은 XML 파서는 무엇입니까?XML로 인코딩 된 데이터를 교환하는 것이 전부라면 대중적인 버클리 소켓 API를 사용하여 네트워크를 통해 텍스트를 전송하는 것입니다. 웹에서 사용 방법을 보여주는 많은 무료 자습서가 있습니다. –

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 내 질문에 대해서만 ASCII 문자열 (또는 당신이 말한대로 텍스트)를 보내는 것이 아니라 클라이언트와 서버 프로그램간에 XML 문서를 교환하는 방법입니다. – make

+0

XML 문서는 ASCII 문자열입니다. 그 안에 꺾쇠 괄호가 하나있는 것. –

답변

1

, gSOAP는 관련 코드, 확실하지가 포함되어 있습니다.

+0

감사합니다! 그게 내가 사용하려고하는 것입니다,하지만 그것은 복잡합니다 – make

0

HTTP가 수행하는 작업을 살펴보십시오. 이어지는 페이로드의 길이를 나타내는 간단한 헤더와 타임 스탬프 및 유형과 같은 일부 추가 기능을 살펴보십시오. 다른쪽에 말해야 할 것은 소켓에서 읽는 바이트 수와 파일 이름 일 것입니다. 또한 응용 프로그램 요구에 따라 보낸 사람에게 확인 응답을 구현할 수도 있습니다.

2

스트리밍 파서가있는 XML 파싱 라이브러리를 사용하는 것이 좋습니다. 양 끝에서 올바른 형식의 문서에 의존 할 수 있다고 가정합니다. 올바른 형식의 XML은 자체 구분입니다. libxml2과 같은 것이 적합해야합니다.

2

XML 스키마에서 프로토콜을 지정한 다음 XML 메시지를 구문 분석하고 직렬화 할 수있는 C++ 클래스를 자동으로 생성하는 것이 좋습니다. 그렇다면 CodeSynthesis XSD을 살펴보고 C++ 컴파일러에 대한 XML 스키마를 살펴볼 수 있습니다. 그것은 당신이 찾고있는 것을 거의 정확하게합니다. 더 가벼운 버전을 원한다면, 모바일/임베디드 개발에 초점을 맞춘 XSD/e도 있습니다.

+0

대단히 감사합니다 답변을 많이 Logged – make

0

당신이 expact library을 사용할 수 있습니다,이 XML 객체를 생성 할 수 있습니다 및

관련 문제