| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > Помогите пожалуйста. Winsock 1 Гбит/сек нет такой |
| Автор: ForNights 10.3.2011, 09:09 |
| Пишу под WinXP на Builder Cpp использую Winsock протокол TCP/IP на карточке в 100 Мбит/сек достигает скорости в 60-70 Мбит/сек, а вот когда переношу прогу на компьютер с карточкой 1 Гбит/с достигаю скорости 176 Мбит/сек!!!! Информацию передаю через один сокет. По моему глубокому убеждению считаю что скорость должна быть, а её нет! |
| Автор: borisbn 10.3.2011, 11:26 |
| чем скорость измеряешь ? какой размер пакета, передаваемого за раз ? попробуй увеличить его раз в 10-20... |
| Автор: ForNights 10.3.2011, 13:59 | ||||||
Про пакеты ничего не могу сказать, но буфера я менял в пределах от 1500 до 512000 и устанавливал их через setsockopt: При отказе от ручного выставления размера буфера, он производит поиск оптимума сам, но на мою задачу это не влияет.
При инициализации глобальные переменные имеют следующие значения: count_send_data = 10; count_all_data = 0; count_loc_data = 0; lab = 0;
Добавлено через 3 минуты и 2 секунды Но вот воспользовался советом и пустил клиента в 4 потока и сервера в 4, скорость при этом на локал хосте выросла с 176 до ~350 - 700 МБит/сек, но какая то она нестабильная, у меня складывается впечатление что я где то с потоками напортачил, а вернее с подсчётом времени из этих потоков!? Сейчас у меня заведена глобальная переменная в которую потоки плюсуют количество принятых данных, при приёме десяти порций происходит подсчёт результата. Внимание вопрос, если я использую один сокет на сервере и один на клиенте, то могу ли я заполнить канал в 1 ГБит/сек, или же мне продолжать мутки с многопоточностью? |
| Автор: ForNights 11.3.2011, 10:29 | ||||
Благодарю за направление и думаю что в ближайшее время взгляну в сторону UDT, но вот про чтение запись в сокет не согласен! Я в клиенте только записываю в сокет, а на стороне сервера только читаю, и если я бы получил 70% скорости от гигабитного канала то был бы просто счастлив, а мои 176 МБит/сек покрывают только ~20% от канала!??? |
| Автор: Олег2005 11.3.2011, 23:09 |
Виндовс может резервировать часть пропускной способности канала - и не отдавать ее в пользование пользователя |