Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> качать файл больше чем в 1 сессию http 
:(
    Опции темы
Loki
Дата 12.6.2008, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 9.7.2006

Репутация: нет
Всего: нет



Как создать несколько потоков для скачивания 1 файла? Для этого нужно в каждом потоке запрашивать определенную часть файла  и расчитывать колличество частей или как?
PM MAIL   Вверх
Loki
Дата 14.6.2008, 05:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 9.7.2006

Репутация: нет
Всего: нет



подскажите что не так?
Вот что при сборке в с++
Код

int main(int argc, char **argv){
..etc...
        if (argc != 2){
                fprintf(stderr, "Usage: %s <host name> \n", argv[0]);
                exit(1);
        }
        for(num_connect = 0; num_connect < 35; num_connect++){
//pthread.cc:34: ошибка: некорректное преобразование из 'void*' в 'void* (*)(void*)'
//pthread.cc:34: ошибка:   при инициализации 3 -го аргумента 'int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)'
                ret = pthread_create(&tid[num_connect], NULL, (void *)squirtIt, argv[1]);
        }
        for(num_connect = 0; num_connect < 35; num_connect++){
                pthread_join(tid[num_connect], NULL);
    }

А при сборке в Си
/tmp/cc8MIS1o.o: In function `main':
pthread.c:(.text+0xa8): undefined reference to `pthread_create'
pthread.c:(.text+0xd5): undefined reference to `pthread_join'
collect2: выполнение ld завершилось с кодом возврата 1

PM MAIL   Вверх
jonie
Дата 14.6.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



либо инклюды не прописал, либо библиотеки во время линковки не подключил


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Loki
Дата 14.6.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 9.7.2006

Репутация: нет
Всего: нет



да там одна библиотека которая на это влияет то #include <pthread.h>
попробовал еще вот так...
Код

//void *squirtIt(char *hName);
void *squirtIt(void * arg, char *hName) // только это похоже больше на с++, в сишном ломается.
char letsGetStarted[128];
int main(int argc, char **argv){
...........
        for(num_connect = 0; num_connect < 35; num_connect++){
        //      ret = pthread_create(&tid[num_connect], NULL, (void *)squirtIt, argv[1]);
                ret = pthread_create(&tid[num_connect], NULL, &squirtIt, (void*)argv[1]);
        }
        /* assuming any of these threads actually terminate, this waits for all of them */
        for(num_connect = 0; num_connect < 35; num_connect++){
                pthread_join(tid[num_connect], NULL);
        }

и почему-то слетели декларации
pthread.cc:20: ошибка: expected initializer before 'char'
pthread.cc: In function 'int main(int, char**)':
pthread.cc:25: ошибка: нет декларации 'letsGetStarted' в этой области видимости
pthread.cc:36: ошибка: нет декларации 'squirtIt' в этой области видимости
pthread.cc: In function 'void* squirtIt(char*)':
pthread.cc:65: ошибка: нет декларации 'letsGetStarted' в этой области видимости
PM MAIL   Вверх
W4FhLF
Дата 14.6.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 1
Всего: 121



pthread.lib не подключил.

Код

#pragma comment(lib, "pthread.lib");



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
andrew_121
Дата 15.6.2008, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: нет
Всего: 33



Loki - Неужели ты не видишь, что передаешь неправильный параметр !!!
Третьим аргументом функции "pthread_create", должен быть указатель на функцию, получающую и возвращающую "void*" !

Это сообщение отредактировал(а) andrew_121 - 15.6.2008, 02:19


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Loki
Дата 15.6.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 9.7.2006

Репутация: нет
Всего: нет



Цитата(andrew_121 @ 15.6.2008,  02:17)
Loki - Неужели ты не видишь, что передаешь неправильный параметр !!!
Третьим аргументом функции "pthread_create", должен быть указатель на функцию, получающую и возвращающую "void*" !

воттак тоже не прокатило
void *squirtIt(void * arg)
....
ret = pthread_create(&tid[num_connect], NULL, &squirtIt, (void*)argv[1]); 


PM MAIL   Вверх
Loki
Дата 16.6.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 9.7.2006

Репутация: нет
Всего: нет



нужно было собрать с опцией -lpthread
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0567 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.