고신뢰성 무역/신호 복사기(이념과 발전에 대한 논의) - 페이지 7

 

확인. 그런 다음 소켓 연결을 작업 모델로 사용할 것을 제안합니다.

Схема работы синхронизатора:

- 서버는 클라이언트와 영구적인 소켓 연결을 생성합니다.
- 마스터 클라이언트는 거래 이벤트 중에 주문의 현재 상태를 보냅니다.
- 서버는 이 파일을 저장하고 즉시 다른 모든 클라이언트에 보냅니다(이미 소켓 연결이 있음).
- 클라이언트는 파일을 수신하고 수신된 데이터에 따라 주문 상태를 변경합니다.
- 또한 새로운 클라이언트가 접속하면 마지막으로 저장한 마스터 파일을 클라이언트로 전송합니다. (초기 동기화용)

이러한 시스템의 주요 이점은 트래픽 절감 입니다.
- 클라이언트의 지속적인 요청이 필요하지 않습니다. 그는 가용성에 따라 서버에서 수락합니다.
- 유사하게, 마스터 클라이언트는 변경 사항이 감지된 경우에만 데이터를 보냅니다.

통신 손실 보호
- 클라이언트는 서버와의 연결을 확인하기 위해 5초마다 "Heartbeat" 패킷(예: 2바이트)을 보냅니다.
- 전송 실패(응답 없음)의 경우 클라이언트는 연결을 다시 초기화합니다.
- 서버도 마찬가지입니다. 10초 이내에 클라이언트로부터 제어가 없으면 소켓 연결이 닫힙니다.


이 링크에 단점이 있습니까?
- 예를 들어, 사용 가능한 최대 소켓 연결 수는 얼마입니까?
 
sergeev :

통신 손실 보호
- 클라이언트는 서버와의 연결을 확인하기 위해 5초마다 "Heartbeat" 패킷(예: 2바이트)을 보냅니다.

연결이 TCP/IP 전송 프로토콜을 통한 경우 연결이 소켓 수준에서 자동으로 처리되기 때문에 이것은 수행되지 않습니다. 운영 체제. 연결이 끊긴 경우 클라이언트에서 예외가 트리거되며 이 경우 처리기에서 정확히 수행해야 하는 작업을 지정해야 합니다. 서버에 관해서는 그는 램프에 대해 관심을 가지고 있습니다. 클라이언트가 떨어졌다면 이것은 이미 클라이언트의 문제입니다.

세르게예프 :


- 예를 들어, 사용 가능한 최대 소켓 연결 수는 얼마입니까?
하나의 IP 주소에 있는 하나의 호스트에 대해 최대 65536개의 포트를 사용할 수 있으며 그 중 일부는 이미 다른 인터넷 연결에 사용됩니다. 글쎄, 하나의 포트는 항상 수신 대기용 서버 소켓이 차지합니다.
 
Reshetov :

연결이 끊긴 경우 클라이언트에서 예외가 트리거되고 해당 핸들러에 작성해야 합니다.

어떤 예외를 말씀하시는 건가요?
WS2_32.dll에 대해 이야기하고 있습니다. 일반 버클리 소켓(비동기 버전이지만). 나는 어떤 예외도 보지 못했다. 보내기/받기를 시도해야만 충돌을 감지할 수 있습니다.

전체적으로 하나의 IP에 대해 하나의 호스트에서 최대 65537개의 포트를 사용할 수 있으며 그 중 일부는 이미 다른 인터넷 연결에 사용됩니다.
Duc, 하나의 포트만 있으면 됩니다.
그리고 이 포트에 몇 개의 소켓 연결을 끊을 수 있습니까?
 
sergeev :

어떤 예외를 말씀하시는 건가요?
WS2_32.dll에 대해 이야기하고 있습니다. 일반 버클리 소켓(비동기 버전이지만). 나는 어떤 예외도 보지 못했다. 보내기/받기를 시도해야만 충돌을 감지할 수 있습니다.

Duc, 하나의 포트만 있으면 됩니다.
그리고 이 포트에 몇 개의 소켓 연결을 끊을 수 있습니까?

하나의 포트에는 하나의 연결만 연결됩니다. 클라이언트가 연결하려면 서버에 할당된 IP와 포트 번호를 알아야 합니다. 또는 IP 대신 도메인 이름을 지정할 수 있습니다. 소켓은 DNS를 통해 이를 IP 주소로 확인합니다.

서버 소켓은 클라이언트의 연결을 위해 이 가장 전용 포트에서 수신 대기합니다. 클라이언트가 합법적이면 소켓은 통신을 유지하기 위해 사용 가능한 풀에서 영구적인 연결을 위해 다른 포트를 할당합니다. 그 후 영구 포트가 다시 해제되고 다른 클라이언트의 연결을 수신합니다.

TCP/IP 전송 프로토콜을 사용하여 연결하는 방법입니다. 이 모든 작업은 소켓 수준에서 수행됩니다. 프로토콜을 프로그래밍할 필요가 없습니다. 이는 표준이며 이미 운영 체제의 공유 라이브러리에 프로그래밍되어 있습니다.

 
개발에 유용할 수 있습니다.
파일:
kopir.zip  397 kb
 
Reshetov :
클라이언트가 합법적이면 소켓은 통신을 유지하기 위해 사용 가능한 풀에서 영구적인 연결을 위해 다른 포트를 할당 합니다.

Yuri, 기본을 칠해줘서 고마워요. 하지만 모든 게 맞지 않습니다. 당신은 지식을 제공하지 않습니다.

강조 표시된 것은 일반적으로 넌센스입니다. 죄송합니다. 포트 개념을 두 가지 다른 형식으로 적용할 수도 있지만 허용된 개념으로 작업하는 것이 좋습니다.

 
SEVER11 :
개발에 유용할 수 있습니다.

할 것 같지 않은. 비전문.
 
sergeev :


강조 표시된 것은 일반적으로 넌센스입니다. 죄송합니다. 포트 개념을 두 가지 다른 형식으로 적용할 수도 있지만 허용된 개념으로 작업하는 것이 좋습니다.

그들이 말했듯이 이것들은 당신의 개인적인 문제이며 포트 개념을 어떻게 적용 할 것입니다. TCP/IP 프로토콜에서 포트가 어떻게 사용되는지 방금 설명했습니다. 다시 한 번, 나는 프로토콜이 표준이라는 것을 반복할 것입니다. 나는 그것을 발명하지 않았다.

그런 다음 나 없이 어떻게든 스스로 알아내십시오.

행운을 빕니다!

 
sergeev

그리고 네트워크 크기의 순서는 무엇이며 몇 명의 클라이언트가 1000, 100, 10, 1이어야 합니까?

그리고 결국, 수천 명의 클라이언트가 있는 트래픽에서 서버가 실제로 중단됩니다.

 
Urain :

그리고 네트워크 크기의 순서는 무엇이며 몇 명의 클라이언트가 1000, 100, 10, 1이어야 합니까?

그리고 결국, 수천 명의 클라이언트가 있는 트래픽에서 서버가 실제로 중단됩니다.


그게 요점입니다. 내가 생각하려고 하는 것. 물론 처음에는 더 많은 확장성을 투자해야 합니다. 즉, 목표는 1000-h에 대해 수행하는 것입니다. 그리고 나중에 유닛이 사용하는 것은 중요하지 않습니다.

이것이 내가 지금 선택하고 결정하려고 하는 이유입니다. 소켓이 있는 속도와 마이크로 트래픽 중 하나입니다. 또는 새로운 정보 부분에 대한 클라이언트의 끊임없는 swotting에 대한 http 및 상당한 트래픽.