TCP/IP를 사용하여 대용량 데이터를 전송하는 방법

업데이트 됨 May 19, 2023

해당 제품

소프트웨어

  • LabVIEW

문의사항

10x50,000개의 요소를 가진 배열에 측정 데이터를 저장 했습니다. 이 데이터를 LabVIEW에서 다른 컴퓨터로 전송하고 싶습니다. 내가 아는 한 TCP/IP 프로토콜은 65,535 바이트로 제한됩니다. 데이터를 보내기 전에 압축하는 방법이 있습니까? 아니면, 이 방대한 양의 데이터를 실시간으로 전송할 수 있는 방법이 있습니까?

해결책

LabVIEW의 TCP 쓰기 함수 및 TCP 읽기 함수는 기본 네트워크 연결에 적합한 방식으로 데이터 전송을 자동으로 처리하는 고급 함수입니다.

위에 설명 된 예시에서 TCP 쓰기 기능은 사용자 데이터를 분할하고 여러 네트워크 프레임 / 패킷을 사용하여 전송합니다.

추가 정보

패킷 크기

IPv4 패킷은 65,535 바이트 크기로 제한됩니다. 그러나 TCP/IP 연결의 하위 계층은 일반적으로 패킷 크기가 더 낮습니다. 즉, 이더넷의 "최대 전송 단위"(MTU)는 약 1,500 바이트입니다.

대역폭 고려 사항

TCP/IP 연결의 대역폭은 제한되어 있습니다. 위의 문제에서 설명한 것과 같은 DBL 유형의 500,000 개 요소 배열은 약 4MB의 사용자 데이터와 같습니다. 이 배열을 초당 세 번 전송하면 이미 100MBit/s 고속 이더넷 연결이 과포화 됩니다.

예제 코드

해당 자료는 LabVIEW의 TCP 함수를 사용하여 위에서 설명한 문제에서 배열을 전송하는 방법에 대한 예제입니다. 먼저 recipient.vi를 실행 한 다음 sender.vi를 실행합니다.

참고: 하기 이미지는 프로젝트에서 재 사용 할 수 있는 LabVIEW 코드가 포함된 LabVIEW 스니펫 입니다. 해당 스니펫을 사용하려면, 이미지에서 마우스 오른쪽 버튼을 클릭하고 컴퓨터에 저장한 다음 파일을 LabVIEW 다이어그램으로 끌어 놓으십시오.



이 스크린샷은 위의 예제 코드가 실행될 때 이더넷을 통해 전송되는 실제 네트워크 프레임을 보여 줍니다.

프레임 #1~3은 연결을 설정하고, 프레임 #4는 데이터 길이(4 바이트)의 전송, 프레임 #5는 배열을 전송하는 첫 번째 프레임입니다. 프레임 #5와 다음 프레임의 크기는 각각 1,514 바이트입니다. (수신자에서 보낸 사람에게 전송된 프레임 #10과 같은 승인 프레임 제외)