Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / TServerSocket TClientSocket в FireMonkey / 11 сообщений из 11, страница 1 из 1
23.06.2015, 09:06
    #38990305
kaskas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TServerSocket TClientSocket в FireMonkey
Здравствуйте
Мне нужно организовать обмен массивами типа unsigned char между приложением и контроллером через Ethernet. То есть "в сети" будет всегда 1 клиент и 1 сервер.
Столкнулся со следующей проблемой:
При создании приложения на VCL для передачи массивов типа char пользовался указанными в названии темы компонентами
Код: plaintext
1.
2.
3.
4.
5.
6.
ServerSocket1->Socket->Connections[0]->SendBuf(Message,MessLenght)
void __fastcall TfrmMain::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket)
{
RecLenght = Socket->ReceiveLength();
Socket->ReceiveBuf(RecBuffer,RecLenght);
}


Сейчас пишу аналогичное приложение на FireMonkey, и тут указанных компонентов нет.. Попробовал заморочиться с Indy (IdCmdTCPServer1, IdCmdTCPClient1) - пока получается только отправить/получить String, и то как-то неудобно и муторно..
Код: plaintext
1.
2.
MyContext->Connection->IOHandler->WriteLn("lala");
AContext->Connection->IOHandler->ReadLn();



Попробовал через TcpClient1... От клиента серверу строка уходит, от сервера клиенту - нет.. (для начала строку хотя бы стараюсь ловить)
Код: plaintext
1.
2.
TcpClient1->Sendln("1223"); //работает
TcpServer1->Sendln("asd"); //не работает



Подскажите пожалуйста, есть ли "заменитель" TServerSocket TClientSocket в FireMonkey? Или может чем ещё можно решить мою задачу.. Или хоть как это сделать через Indy?..

Заранее спасибо!
...
Рейтинг: 0 / 0
23.06.2015, 11:37
    #38990473
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TServerSocket TClientSocket в FireMonkey
kaskas,

в С есть просто socket api, в win winsocks.

когда пишут на С, их и используют, а если ты хочешь писать как на дельфи, я только могу тебя перекинуть в форум по дельфи.
...
Рейтинг: 0 / 0
24.06.2015, 03:27
    #38991205
kaskas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TServerSocket TClientSocket в FireMonkey
не надо меня никуда отправлять пожалуйста=) хотя бы пока;)

а можно подробнее, как что пишется на C++? Какую компоненту надо на форму кинуть и какой метод задействовать хотя бы.. Обязательно, чтоб на vcl не завязано было.
...
Рейтинг: 0 / 0
24.06.2015, 09:17
    #38991316
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TServerSocket TClientSocket в FireMonkey
kaskasКакую компоненту надо на форму кинуть.. Обязательно, чтоб на vcl не завязано было.это неразрешимое противоречие. Либо компонент на форму, либо чтоб на vcl не было завязано.
...
Рейтинг: 0 / 0
24.06.2015, 12:36
    #38991523
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TServerSocket TClientSocket в FireMonkey
kaskasне надо меня никуда отправлять пожалуйста=) хотя бы пока;)

а можно подробнее, как что пишется на C++? Какую компоненту надо на форму кинуть и какой метод задействовать хотя бы.. Обязательно, чтоб на vcl не завязано было.

примеры серверов и клиентов tcp/upd от CMU
ещё один клиент
...
Рейтинг: 0 / 0
25.06.2015, 03:12
    #38992166
kaskas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TServerSocket TClientSocket в FireMonkey
egorych, при всем уважении, думаю вы ошибаетесь...

MasterZiv, спасибо огромное! Изучаю..
...
Рейтинг: 0 / 0
25.06.2015, 05:56
    #38992172
kaskas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TServerSocket TClientSocket в FireMonkey
Ничего не получается.. Описанных в этих юнитах инклудов у меня по умолчанию не нашлось. Поискал заголовочные файлы просто на ПК - нашлось по несколько разноразмерных копий.. Попытался их подсунуть - rad_studio стал ругаться на заголовочные файлы внутри этих свежедобытых заголовочных файлов, которых в свою очередь тоже несколько... в общем тупик :(
...
Рейтинг: 0 / 0
25.06.2015, 06:45
    #38992180
m_Sla
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TServerSocket TClientSocket в FireMonkey
В 6 билдере у Indy кроме WriteLn, ReadLn есть ReadBuffer и WriteBuffer.
...
Рейтинг: 0 / 0
25.06.2015, 08:00
    #38992200
kaskas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TServerSocket TClientSocket в FireMonkey
извиняюсь, что не написал сразу.. Пишу на Embarcadero RAD Studio XE3. Полагаю, там другая версия Indy, потому что все, что выдает Indy - на скриншоте http://s019.radikal.ru/i632/1506/24/3bd51e123087.jpg . И там нет этих замечательных методов:(
...
Рейтинг: 0 / 0
25.06.2015, 08:02
    #38992201
kaskas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TServerSocket TClientSocket в FireMonkey
Что получилось в итоге
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
unsigned char MessageToController[12];
/*заполняем MessageToController*/
TMemoryStream *t = new TMemoryStream;
// t->SetSize(12);
// t->Clear();
t->Write(MessageToController, 12);
t->Position = 0;
IdCmdTCPClient1->Socket->WriteBufferClear();
IdCmdTCPClient1->Socket->WriteBufferOpen();
IdCmdTCPClient1->Socket->Write(t,12,true);
IdCmdTCPClient1->Socket->WriteBufferClose();
delete t;


все отсылается, wireshark тому свидетель, но почему-то добавляется 4 байта перед моим массивом (00 00 00 0С), видимо длина посылки. И я так полагаю именно из за этой приставки сервер меня отключает, и я получаю 10054 ошибку. Можно ли префикс этот убрать как-то?
...
Рейтинг: 0 / 0
25.06.2015, 12:55
    #38992507
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TServerSocket TClientSocket в FireMonkey
kaskasНичего не получается.. Описанных в этих юнитах инклудов у меня по умолчанию не нашлось. Поискал заголовочные файлы просто на ПК - нашлось по несколько разноразмерных копий.. Попытался их подсунуть - rad_studio стал ругаться на заголовочные файлы внутри этих свежедобытых заголовочных файлов, которых в свою очередь тоже несколько... в общем тупик :(

Ты не должен это компилировать, это для POSIX, ты должен на это посмотреть как на пример.

Под Windows надо немного по-другому.

ещё сервер

ещё всё вместе (статья)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / TServerSocket TClientSocket в FireMonkey / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]