2011-09-19 3 views
3

나는 this thread을 읽었으며 실제 데이터에서 분리 된 길이의 데이터를 Nagle의 알고리즘과 함께 보내면 전송 된 데이터를 재생하고 동기화 해제 할 수 있다는 사실을 솔루션에서 발견했습니다.TcpClient로 Nagle의 알고리즘을 처리하는 방법은 무엇입니까?

많은 코드 샘플이 있기 때문에 클라이언트가 데이터의 길이를 먼저보고 다음 데이터를 호출하여 별도의 호출을 보게되므로이 문제에 대해 궁금합니다. 이 문제가 어떻게 든 영향을 미치지 않았습니까?

데이터의 길이와 데이터 자체를 단일 바이트 배열로 연결하여 한 번에 전송해야합니까? 그렇다면 두 개의 바이트 배열을 연결하는 더 좋은 방법은 수동으로 두 데이터를 모두 (루프)에서 새로운 데이터로 복사하지 않고 있습니까? 너무 자주 발생해야하는 (사용자 또는 서버가 서로간에 데이터를 보낼 때마다) 비효율적 인 것으로 보입니다.

답변

2

옵션이 설정된 Socket을 만든 경우 Nagle 알고리즘의 영향을받지 않습니다. Send에 전달 된 데이터는 즉시 전송됩니다.

이 경우, 별도의 호출이 아닌 단일 Send 호출로 단일 바이트 배열을 전달하는 것이 더 효율적입니다. Send을 호출 할 때마다 패킷 헤더 오버 헤드가 발생합니다.

관련 문제