![]() |
|
Модераторы: Snowy, Poseidon, MetalFan |
![]()
|
|
| MaXL |
|
||||||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
Всем привет.
Есть структура:
Её нужно переслать использую средства WinSock, ну и потом ессно получить, пользуясь теме же средствами. Пытался делать так:
Функция send возвращает _не_ INVALID_SOCKET. Т.е. данные ушли, но потом я пытаюсь читать так:
Ну и там приходят всякая муть. Почитал форум, вроде бы как из слов понял, что так делать нельзя. Был совет пересылать частично, так вот частично это как ? кто может посоветовать алгоритм ? Просто у меня программа может быть либо сервером либо клиентом, и код для них(именно код обработки входящих пакетов) один. И ещё, пишу используя не блокирующий режим сокетом, т.е. сообщения посылаются моему приложению, а он уже обрабатывает. Кто что посоветует ? -------------------- MaXL |
||||||
|
|||||||
| MaXL |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
Вопрос всё ещё актуален.
-------------------- MaXL |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 2 Всего: 54 |
И так далее... береш элемент из структуры и отсылаеш его... Береш следующий и отсылаеш следующий и так далее... |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
SneG0K, а нафиг так? ошибка явно не в этом.
Добавлено через 2 минуты и 21 секунду автор, чтобы нормально ответили, выложи тестовое приложение... а то у тебя все на словах, а кода нет. -------------------- There are always someone smarter than you... |
|||
|
||||
| vovksextra |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
Должно все работать
не видно в каком режиме сокет работает. нужен полный код . |
|||
|
||||
| MaXL |
|
||||||||||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
Всё, что касается сервера.
Вот функция, которая запускает сервер:
Вот процедура, которая выполняется, когда окно приходит сообщение WM_NETWORK:
Вот код процедуры DispatchPacket:
Теперь всё, что касается по поводу клиента. Подключение к серверу:
А вот код, с помощью которого я посылаю:
Ну вот так..=) -------------------- MaXL |
||||||||||
|
|||||||||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
забавно... последний элемент записи 246 байт... то каким образом вся структура 100 байт?? Добавлено через 1 минуту и 6 секунд и еще, автор, если ты не можешь выложить пример проекта, то кури его сам... те куски кода, что ты привел, не воссоздают полную картину. -------------------- There are always someone smarter than you... |
|||
|
||||
| MaXL |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
MetalFan, да, правильно последний массив 246, потом ещё пять вордов, и получается 256, а в шестнадцатиричной 0x100(или $100).
Вроде бы именно эти куски кода за всё и отвечают, ну да ладно вот выкладываю полностью этот проджект, пока там всё криво, но это только пока, но надеюсь, что разобраться будет не сложно. Присоединённый файл ( Кол-во скачиваний: 15 )
seawar.rar 36,72 Kb-------------------- MaXL |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
MaXL, а, сорь, не заметил знак бакса %)
гляну на досуге проект) -------------------- There are always someone smarter than you... |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 5 Всего: 158 |
особо не всматривался, но налицо самая распространенная ошибка - "пакетный tcp".
tcp - поточный протокол. для простоты, представь, что recv вычитывает данные порциями от 1 до 3 байт(и неважно, что send послал сразу всю структуру). будет твоя программа работать? |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
ага, ну так ясно...
ты в момент получения события FD_READ пытаешься читать данные из сокета сервера... замени
и все, сообщения приходят норм Добавлено через 42 секунды ах да, lSz ввел для контроля за размером принятых данных -------------------- There are always someone smarter than you... |
|||
|
||||
| MaXL |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
dumb, спасибо.
MetalFan, спасибо. +1 Это сообщение отредактировал(а) MaXL - 24.2.2008, 15:02 -------------------- MaXL |
|||
|
||||
![]()
|
| Правила форума "Delphi: Сети" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |