2017-11-22 5 views

답변

2

두 개의 소켓 버퍼가 있습니다. 하나는 출력용이고 다른 하나는 입력 용입니다. 버퍼에 맞는 데이터를 쓰는 경우 연결 속도는 첫 번째 쓰기는입니다.

그 다음에는 눈에 띄는 차이가 있으며 느린 연결은 출력 버퍼의 공간을 기다리면서 더 많이 차단됩니다. 물론 속도 차이가 코드에 영향을 미치지는 않습니다. 속도가 느려지 든 느린 지간에 결국 전송 될 데이터를 작성하게됩니다. 속도가 느린 것은 최종 사용자 만입니다.

+0

건배 @ 명확한 설명에 대한 카만! 1 소켓에서 데이터를 수신하고 다른 클라이언트에 직접 보내는 서버가있을 때 속도 차이를 알 수 있습니까? 그런 다음 1 개의 느린 클라이언트는 수신 된 데이터가 모든 클라이언트에 전송되는 데 걸리는 시간을 증가시킵니다. 나는 이것이 내가 "데이터 수신"과 "고객에게 데이터 전송"을 분리시켜야한다는 것을 의미한다고 생각한다. –

+1

아니요, (기본 IO를 차단할 때) 각 클라이언트와 통신하는 별도의 스레드가 있어야합니다. 그것은 다른 클라이언트에게 전혀 영향을 미치지 않습니다. 그러면 해당 쓰레드는 디자인에 따라 메시지를위한 자체 버퍼를 가질 수 있습니다. – Kayaman