Оценка пропускной способности TcpClient - PullRequest
1 голос
/ 16 декабря 2010

Я хочу создать инструменты оценки пропускной способности, используя TcpClient.Проблема, с которой я столкнулся, заключается в том, что я хочу выполнить измерение в заранее определенное время (вместо предопределенной длины данных буфера для передачи).Если я буду использовать циклы (многократно передавать небольшие фрагменты данных), не снизит ли это производительность (ручная фрагментация или автоматическая фрагментация)?

1 Ответ

1 голос
/ 16 декабря 2010

Зависит от того, вы отключили алгоритм Nagle. Если вы это сделаете, то да, вы сами разберетесь. Если вы этого не сделаете, вы вряд ли достигнете своей цели - потому что данные не могут быть на самом деле записаны, когда вы думаете, что это так ... если только другой конец соединения не отправит обратно окончательное подтверждение "конечно.

Я бы предложил вам использовать небольшую выборку для расчета грубой скорости, а затем создать большую выборку на основе этого, предсказывая, сколько времени это займет. В любом случае вам нужно будет измерить время - это не значит, что вы достигнете точного заранее определенного времени - поэтому оно не должно иметь слишком большого значения. В любом случае вы всегда можете отрегулировать размер по мере необходимости - я ожидаю, что в конечном итоге вы отправите много пакетов, если это не очень медленная сеть, поэтому, если вы решите на полпути отправлять только 200 КБ вместо 300 КБ, это не должно иметь большого значения.

Конечно, это может звучать как ваше первоначальное предложение - но я говорю только об отправке "довольно больших" кусков данных за вызов ... скажем, 16K. (Во всяком случае, намного больше, чем размер пакета). Это не должно сильно влиять на фрагментацию, но все же позволит вам немного подправить вещи по ходу работы. Я бы не советовал вам отправлять крошечные, крошечные пакеты.

...