2017-12-29 38 views
0

Matlab 클라이언트에서 이기종 데이터를 서버로 송수신해야합니다. 데이터에는 32 비트 정수와 64 비트 IEEE 부동 소수점이 포함됩니다. TCP/IP는 문자만을 인식하므로,이 데이터를 연속 배열로 묶어서 클럭 아웃해야합니다. 그런 다음 응답을받은 후 들어오는 문자 배열에서 바이트 데이터를 추출하여 Matlab 유형으로 양식화해야합니다. 누구든지이 일을하는 방법을 알고 있습니까?TCP/IP를 통한 이기종 데이터

+0

"... TCP/IP 만 문자를 인식합니다 ..."- 사실이 아닙니다. TCP/IP (사실 우리는 여기서 TCP에 대해서만 말하고 있습니다.) 원하는 비트를 보낼 것입니다 ... 인코딩 (때로는 "문자")은 한 비트로 중요하지 않습니다. 데이터를 바이트 배열로 압축하여 TCP 소켓에 쓸 수 있다면 괜찮을 것입니다. 어떻게 물건을 포장하고 풀 었는지 (직렬화/비 직렬화)하는 방법에 대한 프로토콜이 필요한 것 같습니다. 데이터를 직렬화 할 수있는 라이브러리가있는 여러 형식이 있습니다. 몇 가지 예를 들면 : gRPC, MessagePack, BSON, Protobuf, Thrift, XML, JSON ... 목록이 계속됩니다. – marklap

+0

나는 동의해야한다. TCP RFC에서 "TCP는 인터넷 시스템을 통한 전송을 위해 일부 수의 옥텟을 세그먼트로 패키징함으로써 사용자간에 각 방향으로 옥텟의 연속적인 스트림을 전송할 수 있습니다." 따라서 TCP는 데이터가 x86 아키텍처의 경우 옥텟 또는 바이트 또는 문자의 배열로 올 것이라고 가정합니다. C 또는 Forth와 같은 언어에서, 64 비트 (또는 Forth의 80 비트) IEEE 배열을 문자 배열로 어셈블 링 (또는 직렬화 또는 다중화)하는 것은 쉽지 않습니다. 그러나 Matlab에서는 그렇지 않습니다. 내 응용 프로그램에 맞는 간결하고 신뢰할 수있는 방법을 만들었습니다. – AeroGuy

+0

옥텟과 바이트는 동일합니다. 그러나 인물은 그렇지 않습니다. 문자는 특정 순서와 방법으로 정렬 된 즉 인코딩 된 바이트입니다. TCP는 인코딩에 신경 쓰지 않습니다. 인코딩 된 바이트 또는 기타 바이트를 전달합니다. – marklap

답변

0

바이트 문자 스트림에 이기종 데이터 선삭 일반적인 용어는 (역방향, 병렬 변환)를 직렬화한다. 텍스트 문자에 데이터를 직렬화

두 널리 사용되는 포맷은 XMLJSON 있습니다.

해당 용어에 대해 Mathworks 사이트를 검색하거나이 사이트에서 [matlab]과 함께 해당 용어를 검색하면 많은 라이브러리와 코드 예제를 찾을 수 있습니다.

또는 R2016b 이후 MATLAB에는 실제로 JSON에서 직렬화/역 직렬화하기위한 내장 함수가 있습니다 (jsonencodejsondecode).