![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
gabriil |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
вобщем я пишу прогу на языке СИ,цель которой копиревать фаил с одного компа на другой.
проблема в том что программа работает на ура уменя на компютере,но когда прошу друга про тестить она отказывает. вот мой сокет socket(AF_INET, SOCK_STREAM, 0) чтобы отослать фаил я открываю его так fopen(c,"rb") далее я записываю в массив 1024 байта,отсылаю его сайз а затем сам стринг send(l,c,sizeof©, 0) между двомя отсылками стоит параметр слип. затем ваил повторяется,до тех пор пока не дошел до EOF,затем посылается сайз остатка и сам остаток файла. затем посылается "done" при виде которого клиент заканчивает принятие. вот как я и говорил,уменя на машине всё работает,копирует любой фаил,но когда пытаюсь сделать тоже самое через сеть он принимает только четверть. тоесть сервер говорит что отсылает 1024 байта а клиент принимает 0,каждый четвёртый стринг клиент принимает нормально. у когонить есть понятие почему происходит такая каша? ![]() |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
весь код в студию и клиента и сервера (сдобреного кнопачками "код")
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
gabriil |
|
||||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
Это сообщение отредактировал(а) gabriil - 20.8.2006, 15:19 |
||||
|
|||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
gabriil, в дальнейшем , если шлешь 2 файла потрудись их разбить на 2 кода, читать легче
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
имхо код написан корявенько
нашел пару крупную ошибку в клиенте
знаешь че у тя будет при первом сравнении в while ? и вообще отсылай все строки с завершающим 0 сзаду, дабы потом проблем не было Добавлено @ 15:37 gabriil, уже краще ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
gabriil |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
а разве memset не обнуляет автоматом масив?
а тот кусочек кода это всеголишь принятие имени файла,эта ошибка не влияет на мою проблему.(наверное) но я исправил спс. а не аккуратно,это потомучто я полный наб. ![]() а может быть чисто теоритически,какие проблемы могут быть в передачи через инет,которых не может быть в передачи на одном компе. а вобще когджа запускаешь сервер и клиент на одном компе то нужно подключение к инету? |
|||
|
||||
Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
нет
проблем может быть уйма, просто аккуратнее писать код надо, имхо как то делить по ф-циональности, появлюсь дома еще раз код пересмотрю и протестю. Кса у тя сервер одноразовый? один раз отдал файл и фсе? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
||||
|
|||||
gabriil |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
да хотябы один
вобще мистика одна |
|||
|
||||
Rockie |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
что значит "отказывает"? пишет что не может найти dll/bpl? или запускается и не работает. Для певого случая: Если компилятор BCB: Project->Options->Linker снять галку use Dynamic RTL Project->Options->Packajes->Build with runtime packajes снять галку Project->Options->Compiler жмешь Release Если компилятор VC то можно почитать здесь -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
gabriil |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
|
||||||
|
|||||||
gabriil |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
прошу прощения!!!
не четверть! с разными фалами по разному,если фаил маленький то примерно четверть,если больше то скакогото момента клиент начинает принимать место 1024 битов просто 24 бита.(каждая третея-четвёртая строка,остальные как и раньше НОЛЬ) |
|||
|
||||
kirjanov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 22.1.2006 Где: Dark wood of erro r Репутация: 1 Всего: 15 |
gabriil,
вообще че-то не пойму, ты тспользуешь SOCK_STREAM и UDP функциии. Ты лучше определись, UDP у тебя или TCP |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
это где ? Добавлено @ 11:05 gabriil, попробуй покурить это http://www.sources.ru/cpp/cpp_pb_sockets.shtml а то у тя в коде слишком много ошибок , меня лично захарило править ошибки, у мя теряются первые байты , где ты мешаешь и что делаешь типа размер передаешь и сами данные передаешь , это все может смешатся в кучу, так что кури выше приведеную ссылку -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
gabriil |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
upd хз где,ткните пальцем я исправлю. за ссылку спс,но к сожалению я понимаю только язык Си,всё что включает в себя "::" для меня дремучий лес. а почему это может смешаться в кучу? |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
потому как вывод в сокет , имхо, действует наподобии вывода в файл , и вот если ты быстро передаешь и текст и данные , в разных send ' ах , они могут прийти и принятся одним recv
![]() еще один вариант не передавать сразу весь файл и пусть сокет сам его фрагментирует ![]() Добавлено @ 13:07 а выучить? ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
gabriil |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
уменя по этому поводу были соображения.чтобы избежать этой проблемы я поставил Слип.но также можно попробывать запросить от клиента конформацию получения,типо сэнд размер - рисив конфармэйшин - сэнд стринг - рисив конфармэйшин. также попробую передать фаил одним блоком,хотя не знаю как это возможно... если фаил весит 10 мб то придётся аллокиревать массив на 10мб(это вобще можно?!),а если фаил весит 100мб?! а нащёт выучить,дак вот учу пока Си,и так уже перешел с Борланд Си на Дев++,маюсь вторую неделю без clrscr() ![]() |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
при этом ты собираешься так файл читать?
ты хоть представляешь сколько он времени будет так читатся? имхо можно главное что б у тя памяти хватило, или юзай файлы спроецированые в память хорошая среда , но средства отладки там ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 1 Всего: 14 |
recv возвращает только то, что есть в данный момент в буфере. Он конечно может быть и виноват. Но проблема не в нём, а в криво написанном коде
![]() Бесполезное решение. А разница? Можно то можно, но нужно ли ![]() Это сообщение отредактировал(а) ptr - 22.8.2006, 05:38 -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
от аффтара зависит разделять потом! -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 1 Всего: 14 |
-------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
gabriil |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
ptr,я язык знаю совсем поверхностно,поетаму уменя средств подойти с другой стороны не так много.
где именно в этой программе чтото не так. и это чтото не так,теоритически плохо или реализовано криво? п.с. потОм или пОтом? ![]() |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Народ! Протокол FTP еще никто не отменял
|
|||
|
||||
ptr |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 1 Всего: 14 |
Ну а что тогда с сокетами связался. Да везде. И то и другое. gabriil, я могу поправить программы, но они будут сильно отличаться от того, что есть сейчас. Romikgy, я не то процитировал ![]()
Это сообщение отредактировал(а) ptr - 22.8.2006, 12:12 -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
||||
|
|||||
gabriil |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
с чегото начинать надо ![]() |
|||
|
||||
ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 1 Всего: 14 |
-------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 1 Всего: 14 |
-------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
ни ля ля не понял, дафай пополочкам, что и где изменит (всю мысль давай, а не частями) -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 1 Всего: 14 |
Ладно проехали
![]() ![]() Это сообщение отредактировал(а) ptr - 22.8.2006, 15:56 -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
gabriil |
|
||||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
почему это ничего не даст,где конкретно ошибка? теоритически план пересылки распиши пожалуйста.
а что лучше? я изучил книгу дейтелов "как программиревать на Си" и в школе немного прошел. сейчас считаю что пора начать работу с сетью,а затем переходить на функции виндуса. |
||||
|
|||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
имхо всегда делается наоборот хотя он и сложнее -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |