2013-01-18 2 views
-1

iPhone과 호스트 간의 양방향 IP/TCP 연결을 구현하는 방법.iOS 앱과 서버 간의 실시간 데이터 교환

+0

컴퓨터에서 실제로 키를 누르기를 원하십니까? –

+0

당신이 찾고있는 것은 소위 말하는 소켓을 사용하기 때문에 일반적으로 서버와 통신하고 소켓을 설정하는 포트가 있습니다. 소켓에 인터넷 검색이 도움이 될 것 같아요. 내가 어떤 언어를 쓰는지 알지 못하기 때문에 PC 서버를 쓸 수는 없지만이 튜토리얼은 http://www.linuxhowtos.org/C_C++/socket.htm을 작성하고 실행하는 데 매우 도움이된다. 당신은 그것에서 약간의 도움을 얻고 아마 더 많은 지식을 가진 누군가가 세부 사항을 채울 수 있습니다. – qrikko

+0

하지만 클라이언트에서 호스트로 1 단계와 같은 소켓을 통해 데이터를 보낼 수 있습니다. 확실하지 않습니다. 어떻게 데이터를 호스트에서 클라이언트로 다시 보낼 수 있습니까? 다른 말로하면, 나는 서버가 클라이언트와 디바이스 # 2를위한 호스트로 동작하기를 원한다. - 서버 코드는 C++/C# .. 등이 될 수있다. – IronMan1980

답변

0

TCP/IP 통신은 양방향 통신입니다.

True : 서버가 연결을 수신 대기해야하며 클라이언트가 연결을 끊을 경우 연결을 재설정해야합니다.

그러나 연결 시간 동안 클라이언트는 (필요한 경우) 서버로 메시지를 보낼 수 있으며 그 반대의 경우도 마찬가지입니다.

연결을 유지하려면 (특정 시간 동안 비활성 상태가 된 후에 종료 할 수 있음) 일반적으로 클라이언트 (클라이언트)에서 서버 (서버)로 더미 (keepalive) 문자열을 보낼 수 있지만 그 반대 방향으로 갈 수 있습니다.

iOS 클라이언트와 서버간에 연결을 설정하는 방법을 이미 알고 있으므로 (PC 기반이든간에) 클라이언트에서 서버로 문자열을 전송하는 방법을 알고 있습니다. 서버 - 투 - 클라이언트 통신.

정확한 방법은 iOS 및 PC-server에서 사용하는 소켓 유형에 따라 다릅니다.

체사레 로키에서 좋은 자습서는 여기에서 찾을 수 있습니다 : How To Create A Socket Based iPhone App and Server

또한 코코아는 GitHub의에 로비 핸슨에서 CocoaAsyncSocket 전화를위한 매우 유용하고 잘 문서화 소켓 래퍼있다.

편집 : 귀하의 경우

당신 것 일반적으로 한쪽에 적어도 하나의 소켓 기반 클라이언트가 있습니다. 클라이언트는 분실되었을 경우 연결을 다시 시도하거나 처음으로 연결을 시도 할 책임이 있습니다.

반대쪽에는 청취자 인 소켓 - 새로운 연결을 수신 대기하는 소켓. 새로운 연결 (클라이언트에서)마다 새로운 소켓을 생성하고 거기에서 양방향 통신을 처리 할 수 ​​있습니다. 따라서 클라이언트 -> 서버는 연결을 설정하는 동안에 만 필요합니다.

+0

맞음 - 나는 IP/TCP에 관해서 전문가가 아니다. 그러나이 주제에서 본 거의 모든 것들은 동일한 요청 내에서 서버로부터 응답을 얻을 것으로 기대합니다. 나는 실제로 서버를 클라이언트로, 디바이스를 호스트로 만드는 예제를 아직 보지 못했다. 나는 방법이 있어야한다는 것을 압니다, 채팅 프로그램이 이것의 한 예일 수 있습니다. – IronMan1980

+0

단어가 참된 의미로 서버에 적용되는 경우가 일반적입니다. 어떤 경우에는 클라이언트가 연결하고 요청을 보냅니다 - 서버가 응답합니다 - 클라이언트는 응답을 수신하고 연결을 끊습니다. 그러나 원하는만큼 오랫동안 연결을 유지할 수 있습니다. 그리고 서버는 어떤 데이터 (이벤트)를 보낼 수 있습니다 - 폴링이 필요 없습니다. 연결이 아직 살아 있는지 확인하기 위해 폴링은 여전히 ​​권장됩니다. 그렇지 않으면 단순히 다시 연결하십시오. –

+0

좋습니다. 서버에서 클라이언트로 "이벤트"를 어떻게 보낼 수 있는지 알아야 할 것 같습니다. 사실, 이것은 내 프로그램이 필요한 것입니다. – IronMan1980

관련 문제