TCP 소켓을 사용하여 이더넷을 통해 PC에 연결하는 임베디드 시스템을 개발 중입니다. PC는 TCP 클라이언트가되며 임베디드 시스템은 서버가됩니다. 내가 올바르게 이해한다면, 고전적인 커뮤니케이션 모델은 클라이언트가 서버에 데이터를 보내고 서버가 매번 응답한다는 것입니다. 서버는 절대로 통신을 시작하지 않습니다.1 : 1로 보내기/받기 방식으로 TCP를 사용해야합니까?
내가하고 싶은 것은 해당 응답없이 PC에서 임베디드 시스템으로 명령을 보내는 것입니다. 그런 다음 임베디드 시스템은 명령에 설명 된 작업을 실행합니다. 임베디드 시스템에 오류가 있거나보고 할 상태 메시지가있는 경우 PC에서 폴링하지 않고 이러한 메시지를 보냅니다.
나는 PC 측에서 수신하는 것 이외 모든 것을 알아 냈습니다. C#에서 PC 응용 프로그램을 프로그래밍 중입니다. 소켓에서 데이터가 수신 될 때마다 발생하는 콜백을 설정할 수 있습니까? 내가 본 모든 예제는 블로킹 방식으로 receive 메소드를 사용한다.
TCP 연결은 양방향 연결을 제공합니다. 정의한 것 이외에 어느 방향으로 향한 바이트 간에는 관계가 없습니다. 메시지가 아니라 바이트 스트림을 처리한다는 점을 명심하십시오. TCP는 바이트를 같은 순서로 중복없이 맨 끝으로 가져올 수 있습니다. 특정 바이트 그룹을 함께 이동시키는 것에 대한 어떠한 주장도하지 않으며 네트워크가 지시하는대로 버퍼를 분할하거나 결합 할 수 있습니다. – HABO