![]() |
Модераторы: 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 а выучить? ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |