- 서버는 클라이언트와 영구적인 소켓 연결을 생성합니다. - 마스터 클라이언트는 거래 이벤트 중에 주문의 현재 상태를 보냅니다. - 서버는 이 파일을 저장하고 즉시 다른 모든 클라이언트에 보냅니다(이미 소켓 연결이 있음). - 클라이언트는 파일을 수신하고 수신된 데이터에 따라 주문 상태를 변경합니다. - 또한 새로운 클라이언트가 접속하면 마지막으로 저장한 마스터 파일을 클라이언트로 전송합니다. (초기 동기화용)
이러한 시스템의 주요 이점은 트래픽 절감 입니다. - 클라이언트의 지속적인 요청이 필요하지 않습니다. 그는 가용성에 따라 서버에서 수락합니다. - 유사하게, 마스터 클라이언트는 변경 사항이 감지된 경우에만 데이터를 보냅니다.
통신 손실 보호 - 클라이언트는 서버와의 연결을 확인하기 위해 5초마다 "Heartbeat" 패킷(예: 2바이트)을 보냅니다. - 전송 실패(응답 없음)의 경우 클라이언트는 연결을 다시 초기화합니다. - 서버도 마찬가지입니다. 10초 이내에 클라이언트로부터 제어가 없으면 소켓 연결이 닫힙니다.
이 링크에 단점이 있습니까? - 예를 들어, 사용 가능한 최대 소켓 연결 수는 얼마입니까?
통신 손실 보호 - 클라이언트는 서버와의 연결을 확인하기 위해 5초마다 "Heartbeat" 패킷(예: 2바이트)을 보냅니다.
연결이 TCP/IP 전송 프로토콜을 통한 경우 연결이 소켓 수준에서 자동으로 처리되기 때문에 이것은 수행되지 않습니다. 운영 체제. 연결이 끊긴 경우 클라이언트에서 예외가 트리거되며 이 경우 처리기에서 정확히 수행해야 하는 작업을 지정해야 합니다. 서버에 관해서는 그는 램프에 대해 관심을 가지고 있습니다. 클라이언트가 떨어졌다면 이것은 이미 클라이언트의 문제입니다.
세르게예프 :
- 예를 들어, 사용 가능한 최대 소켓 연결 수는 얼마입니까?
하나의 IP 주소에 있는 하나의 호스트에 대해 최대 65536개의 포트를 사용할 수 있으며 그 중 일부는 이미 다른 인터넷 연결에 사용됩니다. 글쎄, 하나의 포트는 항상 수신 대기용 서버 소켓이 차지합니다.
확인. 그런 다음 소켓 연결을 작업 모델로 사용할 것을 제안합니다.
Схема работы синхронизатора:
- 서버는 클라이언트와 영구적인 소켓 연결을 생성합니다.
- 마스터 클라이언트는 거래 이벤트 중에 주문의 현재 상태를 보냅니다.
- 서버는 이 파일을 저장하고 즉시 다른 모든 클라이언트에 보냅니다(이미 소켓 연결이 있음).
- 클라이언트는 파일을 수신하고 수신된 데이터에 따라 주문 상태를 변경합니다.
- 또한 새로운 클라이언트가 접속하면 마지막으로 저장한 마스터 파일을 클라이언트로 전송합니다. (초기 동기화용)
이러한 시스템의 주요 이점은 트래픽 절감 입니다.
- 클라이언트의 지속적인 요청이 필요하지 않습니다. 그는 가용성에 따라 서버에서 수락합니다.
- 유사하게, 마스터 클라이언트는 변경 사항이 감지된 경우에만 데이터를 보냅니다.
통신 손실 보호
- 클라이언트는 서버와의 연결을 확인하기 위해 5초마다 "Heartbeat" 패킷(예: 2바이트)을 보냅니다.
- 전송 실패(응답 없음)의 경우 클라이언트는 연결을 다시 초기화합니다.
- 서버도 마찬가지입니다. 10초 이내에 클라이언트로부터 제어가 없으면 소켓 연결이 닫힙니다.
이 링크에 단점이 있습니까?
- 예를 들어, 사용 가능한 최대 소켓 연결 수는 얼마입니까?
통신 손실 보호
- 클라이언트는 서버와의 연결을 확인하기 위해 5초마다 "Heartbeat" 패킷(예: 2바이트)을 보냅니다.
연결이 TCP/IP 전송 프로토콜을 통한 경우 연결이 소켓 수준에서 자동으로 처리되기 때문에 이것은 수행되지 않습니다. 운영 체제. 연결이 끊긴 경우 클라이언트에서 예외가 트리거되며 이 경우 처리기에서 정확히 수행해야 하는 작업을 지정해야 합니다. 서버에 관해서는 그는 램프에 대해 관심을 가지고 있습니다. 클라이언트가 떨어졌다면 이것은 이미 클라이언트의 문제입니다.
- 예를 들어, 사용 가능한 최대 소켓 연결 수는 얼마입니까?
연결이 끊긴 경우 클라이언트에서 예외가 트리거되고 해당 핸들러에 작성해야 합니다.
어떤 예외를 말씀하시는 건가요?
WS2_32.dll에 대해 이야기하고 있습니다. 일반 버클리 소켓(비동기 버전이지만). 나는 어떤 예외도 보지 못했다. 보내기/받기를 시도해야만 충돌을 감지할 수 있습니다.
그리고 이 포트에 몇 개의 소켓 연결을 끊을 수 있습니까?
어떤 예외를 말씀하시는 건가요?
Duc, 하나의 포트만 있으면 됩니다.WS2_32.dll에 대해 이야기하고 있습니다. 일반 버클리 소켓(비동기 버전이지만). 나는 어떤 예외도 보지 못했다. 보내기/받기를 시도해야만 충돌을 감지할 수 있습니다.
그리고 이 포트에 몇 개의 소켓 연결을 끊을 수 있습니까?
하나의 포트에는 하나의 연결만 연결됩니다. 클라이언트가 연결하려면 서버에 할당된 IP와 포트 번호를 알아야 합니다. 또는 IP 대신 도메인 이름을 지정할 수 있습니다. 소켓은 DNS를 통해 이를 IP 주소로 확인합니다.
서버 소켓은 클라이언트의 연결을 위해 이 가장 전용 포트에서 수신 대기합니다. 클라이언트가 합법적이면 소켓은 통신을 유지하기 위해 사용 가능한 풀에서 영구적인 연결을 위해 다른 포트를 할당합니다. 그 후 영구 포트가 다시 해제되고 다른 클라이언트의 연결을 수신합니다.
TCP/IP 전송 프로토콜을 사용하여 연결하는 방법입니다. 이 모든 작업은 소켓 수준에서 수행됩니다. 프로토콜을 프로그래밍할 필요가 없습니다. 이는 표준이며 이미 운영 체제의 공유 라이브러리에 프로그래밍되어 있습니다.
클라이언트가 합법적이면 소켓은 통신을 유지하기 위해 사용 가능한 풀에서 영구적인 연결을 위해 다른 포트를 할당 합니다.
Yuri, 기본을 칠해줘서 고마워요. 하지만 모든 게 맞지 않습니다. 당신은 지식을 제공하지 않습니다.
강조 표시된 것은 일반적으로 넌센스입니다. 죄송합니다. 포트 개념을 두 가지 다른 형식으로 적용할 수도 있지만 허용된 개념으로 작업하는 것이 좋습니다.
개발에 유용할 수 있습니다.
할 것 같지 않은. 비전문.
강조 표시된 것은 일반적으로 넌센스입니다. 죄송합니다. 포트 개념을 두 가지 다른 형식으로 적용할 수도 있지만 허용된 개념으로 작업하는 것이 좋습니다.
그들이 말했듯이 이것들은 당신의 개인적인 문제이며 포트 개념을 어떻게 적용 할 것입니다. TCP/IP 프로토콜에서 포트가 어떻게 사용되는지 방금 설명했습니다. 다시 한 번, 나는 프로토콜이 표준이라는 것을 반복할 것입니다. 나는 그것을 발명하지 않았다.
그런 다음 나 없이 어떻게든 스스로 알아내십시오.
행운을 빕니다!
그리고 네트워크 크기의 순서는 무엇이며 몇 명의 클라이언트가 1000, 100, 10, 1이어야 합니까?
그리고 결국, 수천 명의 클라이언트가 있는 트래픽에서 서버가 실제로 중단됩니다.
그리고 네트워크 크기의 순서는 무엇이며 몇 명의 클라이언트가 1000, 100, 10, 1이어야 합니까?
그리고 결국, 수천 명의 클라이언트가 있는 트래픽에서 서버가 실제로 중단됩니다.
그게 요점입니다. 내가 생각하려고 하는 것. 물론 처음에는 더 많은 확장성을 투자해야 합니다. 즉, 목표는 1000-h에 대해 수행하는 것입니다. 그리고 나중에 유닛이 사용하는 것은 중요하지 않습니다.
이것이 내가 지금 선택하고 결정하려고 하는 이유입니다. 소켓이 있는 속도와 마이크로 트래픽 중 하나입니다. 또는 새로운 정보 부분에 대한 클라이언트의 끊임없는 swotting에 대한 http 및 상당한 트래픽.