2012-11-28 2 views
2

macOS 또는 windows를 실행하는 컴퓨터에 연결할 수있는 iOS 용 응용 프로그램을 빌드하고 해당 컴퓨터에서 몇 가지 사항을 제어하려고합니다. 해당 컴퓨터에 다른 응용 프로그램이 설치되어 iOS의 응용 프로그램과 연결할 수 있습니다. 하지만 처음에는 네트워크에 내 앱이 설치되어 실행중인 컴퓨터를 찾아야합니다. 그렇게하는 좋은 방법은 무엇입니까? 나는 방송, 멀티 캐스팅 또는 봉쥬르 사용에 대해 생각했다. 다른 옵션이 있습니까? 내 상황에 가장 적합한 것은 어느 것입니까?네트워크에 내 응용 프로그램이 설치된 컴퓨터 검색

macOS와 windows에 두 개의 서로 다른 응용 프로그램을 사용하려고합니다. 객관적인 c와 C#을 사용하는 응용 프로그램을 계획하고 있으므로 네트워킹 구성 요소를 모두 사용할 수 있어야합니다. 미리 감사드립니다.

+1

구현하기 전에 구현 방법을 생각해보십시오. 전체 VLAN을 검색 하시겠습니까? 요청 패킷을 보내고 응답 패킷을 기다리는가? – ilansch

+0

잘, 저를 위해 또한 조금 막연하다. 먼저 메시지를 브로드 캐스팅하고 응답을 기다리는 것을 생각했지만, 컴퓨터가 네트워크를 떠날 때를 알아야하기 때문에 일정한 간격으로 브로드 캐스트해야 할 수도 있습니다. 아마 iOS에는 좋지 않을 수 있습니다. 배터리가 빨리 소모 될 수 있기 때문입니다. 나는가는 길을 확실히 모르겠습니다. – mrt

+0

같은 컴퓨터에 있습니까? 그들은 정적 IP를 가지고 있습니까? 이것은 일종의 서버 - 클라이언트 애플리케이션입니까? 귀하의 컨트롤 애플 리케이션은 서버이며 나머지는 제어 된 클라이언트입니까? – ilansch

답변

1

가장 간단한 옵션은 IP/UDP 브로드 캐스트 패킷을 사용하는 것입니다. 미리 정의 된 UDP 포트 (예 : 9999)에서 청취 할 수있는 컴퓨터의 응용 프로그램 (모든 OS를 실행하는)은 iOS 장치가 네트워크를 '스캔'하려고 할 때 IP/UDP 브로드 캐스트 패킷을 목적지 포트는 9999입니다. 브로드 캐스트 패킷을 수신하면 컴퓨터의 응용 프로그램이 iOS 장치의 IP 주소를 알고 있기 때문에 응답 할 수 있습니다. 사용자는 거기에서 물건을 가져올 수 있습니다.

네트워크를 떠나는 컴퓨터를 가장 깨끗하게 처리하는 방법은 컴퓨터에서 실행중인 응용 프로그램이 iOS 장치의 IP 주소를 이미 알고 있으므로이 사실을 iOS 장치에 알리는 것입니다. 그러나 현재 컴퓨터 목록을 유지하는 것이 중요하다면 어떤 종류의 폴링 메커니즘이 불가피합니다. 이유는 무엇이든 이유없이 컴퓨터가 충돌 할 수 있기 때문입니다.

다음 멀티 캐스팅이 이용 될 수있다 : 시스템은 주기적으로 IGMP가 소정의 멀티 캐스트 그룹에 합류 보내 (예 : 224.1.1.1) 및 iOS 디바이스는를 '스캔'네트워크를 원할 때 224.1.1.1 운명 캐스트 UDP 패킷을 전송 . 멀티 캐스트 UDP 패킷은 컴퓨터가 224.1.1.1의 멀티 캐스트 그룹에 이미 가입 했으므로 컴퓨터에서 수신 한 다음 컴퓨터가 IP 주소를 알고 있으므로 iOS 장치와 통신을 시작할 수 있습니다. 그러나 이것은 지나치게 복잡하게 보이며 실제로 이점을 제공하지 않습니다. 멀티 캐스트 사용의 요점은 대역폭을 절약하는 것이지만 저장되는 대역폭의 양은 아주 적습니다. 상당한 양의 동일한 데이터를 iOS 장치에서 모든 컴퓨터로 보내지 않는 한이 경로를 사용하지 않아도됩니다.

불행히도 Bonjour에 관해서는 경험이 없으므로 의견을 말할 수는 없지만 최소한 컴퓨터 측면에서는 플랫폼 독립성을 유지하기 위해 간단한 브로드 캐스팅에 투표 할 것입니다. :)

관련 문제