2012-01-21 4 views
1

저는 다양한 프로세스 간의 통신을 위해 소켓을 사용하고 있습니다. 모든 것이 동일한 컴퓨터에서 실행되므로 패킷 손실이 없으며 읽기 시간 초과 등을 얻지 못합니다. 일반적으로 메시지는 작은 크기의 데이터 (JSON, 때로는 바이너리)입니다. 이제 크로스 컴퓨터 통신을하고 싶습니다. . 클라이언트/서버 연결은 일반적으로 다음과 같이 보입니다. 클라이언트는 서버에게 작업 처리를 시작하도록 지시하고 (작업 설명 전달) 서버가 작업을 수행하고 진행 상황을 다시 알리고 클라이언트가 선택적으로 종료 메시지를 보낼 수 있습니다. 완료되면 클라이언트가 완전히 연결 해제 된 상태에서 서버가 계속 청취합니다 (즉, 세션이 완료되면 새 작업이 시작되어 새 세션이 시작됩니다).간단하고 안정적인 네트워크 메시징을 수행하는 방법은 무엇입니까?

통신을 어떻게 구현해야합니까? 네트워크를 통해 소켓을 쉽게 계속 사용할 수는 있지만 이해해야 할 점은 메시지가 전달되지 않아서 서버로 다시 전달되는 것을 확인하기 위해 많은 오류 처리를 추가해야한다는 것입니다. 내가 원하는 것은 단지 send(message, target)이며 완전한 메시지가 전송되도록 안심하십시오. 다른 쪽이 죽었을 때 알림. 필자는 zero-mq와 같은 몇 가지 라이브러리가 있다는 것을 보았습니다. zero-mq는 정확하고 정확하게 수행 할 수 있다고 주장하지만, 실제로 그러한 메시징 라이브러리가 필요한지 확실하지 않습니다. 몇 가지 기본 통신을하기 위해 라이브러리를 사용할 수 있습니까?

나는 C++ & Python을 사용하고 있으며, BSD 스타일 라이센스가 확실히 라이브러리 용으로 선호되고있다. 커뮤니케이션 부분은 정말로 중요한 부분이 아니기 때문에 라이브러리는 다소 안정적이어야하며 한 가지 해결책을 고수 할 수 있기를 바랍니다.

답변

2

TCP 모든 pagackes가 목적지로 전달됨을 보장합니다. [그렇지 않은 경우 다시 보냅니다.] 따라서, 사용하는 경우 - 단일 시스템과 비교할 때 더 많은 시간이 소요되지만 msg 전송의 정확성은 그대로 유지됩니다.

+0

내가 TCP를 고집하는 한, 설정 되었습니까? – Anteru

+0

네트워크가 너무 길어서 메시지가 아무리 도착하지 않더라도 - 그것이 사실이라면 - 통과 시키려면 아무 것도 할 수 없습니다. 그 다음에는 그렇습니다. TCP로 꽤 많이 설정되어 있습니다. – amit

+0

우수, 많이 고마워! – Anteru

2

을 확인해야합니다 :

은 하나 레디 스 인의 많은, 많은 솔루션이 있습니다. 그것은 순수한 BSD 소켓보다 더 간단한 인터페이스를 가지고 있습니다. 더 휴대가 가능하고 우수한 문서가 있습니다.

관련 문제