C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: ICS - Internet Component Suite  (Прочитано 8684 раз)
ChikenpUH
Участник
**

Сказали спасибо: +11/-5
Offline Offline

Сообщений: 296


« : 09 января 2009, 21:50:49 »

Итак..сабж.
Офф. сайт http://www.overbyte.be
Бесплатный. С исходниками. Для Delphi 1-2009, C++Builder 1-2009, Kylix 1-3

Скачал альфу 7. Билдер 2009. Поставил. При установке стал ругаться на *FTPServer*.pas. Удалил его из проекта. Установился. Кинул на форму TWSocket, кнопку, приконектился к серверу, получил строку, вроде работает. Рад Смеющийся
Засунул этот же сокет в свой проект. Сразу же возникла проблема. Application теперь используется из Overbyteicslibrary.hpp а не Forms.hpp, т.е. попа полная...у кого такое было? Или знает кто как решить проблему? Очень не рад Плачущий
Записан
IT-IR
Участник
**

Сказали спасибо: +72/-22
Offline Offline

Сообщений: 877

Плата за вход-Разум!


« Ответ #1 : 10 января 2009, 12:21:11 »

а посмотри может в Forms.hpp  namespace описан, тогда придется через него писать!под рукой билдера нет, но могу сказать что проблем таких не было!
не ужели в Overbyteicslibrary.hpp описан класс TApplication? хм ... странно...
 
Записан
ChikenpUH
Участник
**

Сказали спасибо: +11/-5
Offline Offline

Сообщений: 296


« Ответ #2 : 10 января 2009, 18:13:53 »

эх...сделал вот так:
Forms::Application->
теперь вроде норм...однако действительно странное че то..
Записан
ChikenpUH
Участник
**

Сказали спасибо: +11/-5
Offline Offline

Сообщений: 296


« Ответ #3 : 23 января 2009, 11:33:37 »

Всем привет. Если в кратце, то допустим есть поток (TMemoryStream) и как мне его отправить через TWSocket?
А если поподробнее то допустим создаю структуру, заполняю её, и потом отправляю её. Ну типа вот так
Код
mrim_packet_header_t MMPHead, *MMPHeadPtr=&MMPHead;
MMPHead.magic=CS_MAGIC;
MMPHead.proto=PROTO_VERSION;
Socket->Send(&MMPHead,sizeof(MMPHead));
Все нормально, сервер отвечает тем что надо.
А вот как то же самое но с потоком сделать. Или возможно с чем нибудь ещё..В поток записывается структура и прочие данные и их нужно отправить...
З.Ы.это MMP протокол...http://agent.mail.ru/ru/developers/licence.html
Записан
ChikenpUH
Участник
**

Сказали спасибо: +11/-5
Offline Offline

Сообщений: 296


« Ответ #4 : 29 января 2009, 12:13:10 »

Ну так что никто не знает? Грустный
В сэмплах такого вроде нет (только со строками). Нашел нечто подобное но с файловым потоком и на делфи. Но и так не получается. Вот метод собственно: Send(void *,int)

Код
TMemoryStream *stream=new TMemoryStream();
stream->Write(&MMPHead,sizeof(MMPHead));
stream->SaveToFile("HELLO.bin");
WSocket->Send(stream, stream->size);
 
Вот так не катит. Все компилится и запускается но отправляется совсем не то что в файле Hello.bin
Записан
oxotnik
Глобальный модератор
***

Сказали спасибо: +100/-15
Offline Offline

Сообщений: 2425


« Ответ #5 : 29 января 2009, 12:22:56 »

а если так:
Код
TMemoryStream *stream=new TMemoryStream();
stream->Write(&MMPHead,sizeof(MMPHead));
stream->SaveToFile("HELLO.bin");
stream->Seek(0, soFromBeginning);
WSocket->Send(stream->Memory, stream->size);
 
Записан
ChikenpUH
Участник
**

Сказали спасибо: +11/-5
Offline Offline

Сообщений: 296


« Ответ #6 : 29 января 2009, 16:15:41 »

Ооо великий! Спасибо)) Целующий так нормальный ответ получает) следовательно и отправляет то что надо)
Записан
ChikenpUH
Участник
**

Сказали спасибо: +11/-5
Offline Offline

Сообщений: 296


« Ответ #7 : 19 февраля 2009, 00:57:46 »

опять запары..Снова TWSocket.
Прописываю порт (Port), адресc(Addr).
Подключаюсь. WSocket->Connect();
Получаю данные.
Отключаюсь. WSocket->Close();
Снова хочу подключиться. WSocket->Connect();
Выдает ошибку. "Connect: No port specified". Та же тема даже если заполнен LocalPort (тем же что и Port).
Вот че не так\как надо?
Записан
ChikenpUH
Участник
**

Сказали спасибо: +11/-5
Offline Offline

Сообщений: 296


« Ответ #8 : 08 марта 2009, 19:03:44 »

По поводу вышесказанного: Нужно каждый раз перед вызовом Connect() указывать Addr и Port.

Терь другой вопрос.
Получаю данные:

Код
void __fastcall TMain::Socket2DataAvailable(TObject *Sender, WORD ErrCode)
{
TMemoryStream *s=new TMemoryStream();
char Buf[32768];
int StrSize=Socket2->RcvdCount;
Socket2->Receive(Buf,StrSize);
s->Write(&Buf, sizeof(Buf));
s->SetSize(StrSize);
ProcessMMPPacket(s);
delete s;
}
и дальше обрабатываю поток. Проблема в чем? При высокоскоростном соединении (через ADSL модем) данные приходят полностью и все нормально. Данные представляют собой блоки (заголовок + данные размера, который указан в заголовке). При подключении через GPRS происходит разрыв, то есть идут данные, потом посреди одного блока разрыв, и в следующем пакете уже продолжение. И естественно обрыбатывается нифига не правильно. Может есть способ определить все ли данные пришли...или как нибудь...
Хотелось бы принять данные в один поток, копировать его в другой и если данные все пришли то второй поток уже обрабатывать.
Записан
ChikenpUH
Участник
**

Сказали спасибо: +11/-5
Offline Offline

Сообщений: 296


« Ответ #9 : 15 марта 2009, 00:06:43 »

мда...монолог))
решил проблему...правда одна уязвимость осталась...типа будет ж если разрыв посреди заголовка произойдет...так что...думаю... Подмигивающий
Записан
ChikenpUH
Участник
**

Сказали спасибо: +11/-5
Offline Offline

Сообщений: 296


« Ответ #10 : 16 июня 2009, 21:17:30 »

то что ставил-не совсем то, нашел где то на офф сайте специально под билдер 2009, там проблем с установкой не было

А теперь к делу.
Получаю данные в мемористрим (использую WSocket), когда ммп-пакет пришел полный-даные уходят на обработку. В определенный момент необходимо получить аватарку. Делаю это через HttpCli, но проблема в том что при этом не происходит обработка данных полученных WSocket'ом (не происходит потому что данные не принимаются но приходят, как снифер показал). Короче будто приложение вешается, MultiThreaded=true стоит.
И еще приложение глохнет (висит) когда днс не отвечает (если инет соединение есть но у провайдера че то там).
Как это все исправить?
Записан
Zor
Глобальный модератор
***

Сказали спасибо: +158/-30
Offline Offline

Сообщений: 2946


« Ответ #11 : 16 июня 2009, 21:25:00 »

монолог типа "я дурак, который нифига не знает о TCP и никак не дочитает мануал по компоненту"
а теперь об этом знают и другие Улыбка
Записан
ChikenpUH
Участник
**

Сказали спасибо: +11/-5
Offline Offline

Сообщений: 296


« Ответ #12 : 16 июня 2009, 22:34:01 »

ога..именно так. спасибо "дельные" советы...
разобрался..с чем следует разобраться...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в: