Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизОшибка при передачи данных по TCP протоколу Найти похожие ветки
← →
NBAH1990 (2010-03-07 20:13) [0]Программа делает скриншот экрана и по TcpClient отправляет картинку в Packed record, далее её принимает TcpServer и выводит на Timage. Всё отлично работает, когда клиент и сервер находятся в одном приложении (на одной форме).
http://www.rapidshare.ru/1403795
Но когда я разделил их в 2 приложения, на серверную часть доходят пустые пакеты, либо вообще не доходят. На клиентской части данные правильно записываются в пак, т.к я проверил это сохранением в файл. Проблема именно на сервере. Вот исходник сервера и клиента
http://www.rapidshare.ru/1403801
Стою в тупике, просто нет никаких идей. В исключения антивирусника (NOD32 4) добавил, брэндмауер отключен.
Помогите плиз.
← →
Германн © (2010-03-08 01:01) [1]
> Но когда я разделил их в 2 приложения
Пробовал эти приложения на одном и том же компьютере?
← →
NBAH1990 (2010-03-08 05:42) [2]Только на одном и пробовал, даже так не заработали. На разных даже пробовать не стал.
← →
CrytoGen (2010-03-08 06:57) [3]packed record приведи
а то поди передаёшь чего нибудь типа TImage
← →
Anatoly Podgoretsky © (2010-03-08 08:57) [4]> NBAH1990 (07.03.2010 20:13:00) [0]
А что там по ссылкам?
И в читаемом ли виде?
← →
NBAH1990 (2010-03-08 15:24) [5]Пак вот такой
pack=packed record
kar:TJPEGImage;
hv:string[15];
end;
Var buf:pack;
Вот так передаюClient1.WriteBuffer(buf,SizeOf(buf));
Читаю вот такAThread.Connection.ReadBuffer(bufpr,SizeOf(bufpr));
А разве TJpeg как то не корректно передаётся? А как его тогда передавать? В виде файла не предлагать, слишком медленно.)
← →
Игорь Шевченко © (2010-03-08 15:44) [6]
> А разве TJpeg как то не корректно передаётся?
а объекты вообще некорректно передаются.
> А как его тогда передавать?
Самое простое - в виде файла.
> В виде файла не предлагать, слишком медленно
Всем нелегко
← →
Вася (2010-03-08 16:08) [7]
> В виде файла не предлагать, слишком медленно.)
Зато в виде адреса (чем по сути является kar:TJPEGImage) - быстро. Правда на другом компьютере этот адрес врядли представляет сколько-нибудь интересную информацию
Так что можно выбирать, как лучше - быстро, или чтобы работало
← →
Anatoly Podgoretsky © (2010-03-08 16:10) [8]> Вася (08.03.2010 16:08:07) [7]
Так ничего и не передается.
← →
Юрий Зотов © (2010-03-08 17:41) [9]> NBAH1990 (08.03.10 15:24) [5]
Поле kar:TJPEGImage передается, как адрес объекта. Понятно, что по этому адресу в ДРУГОЙ программе находится не нужный объект, а что-то совсем другое. Возможно, что и вовсе ничего не находится.
На другой машине - тем более.
← →
CrytoGen (2010-03-08 18:22) [10]сохрани в MemoryStream, а из него получи буфер, буфер передай по tcp, потом обратно в MemoryStream и читай из него jpeg
← →
NBAH1990 (2010-03-08 18:47) [11]
> сохрани в MemoryStream, а из него получи буфер, буфер передай
> по tcp, потом обратно в MemoryStream и читай из него jpeg
Буду признателен если покажете на примере)
← →
Anatoly Podgoretsky © (2010-03-08 19:15) [12]> Юрий Зотов (08.03.2010 17:41:09) [9]
Но зато быстро!
← →
NBAH1990 (2010-03-08 19:32) [13]
var ms:TMemoryStream;
jp:TJPEGImage;
begin
Screenshot;
ms:=TMemoryStream.Create;
buf.kar.SaveToStream(ms);
jp:=TJPEGImage.Create;
jp.LoadFromStream(ms);
jp.SaveToFile("1.jpg");
end;
Сохраняется пустой файл =((
← →
Anatoly Podgoretsky © (2010-03-08 20:22) [14]> NBAH1990 (08.03.2010 19:32:13) [13]
ms.position
← →
NBAH1990 (2010-03-08 21:13) [15]
> ms.position
Что это значит?
← →
Плохиш © (2010-03-08 21:16) [16]
> NBAH1990 (08.03.10 21:13) [15]
>
>
> > ms.position
>
>
> Что это значит?
Что все операции с данными потока производятся от текущей позиции.
← →
NBAH1990 (2010-03-08 21:31) [17]А как определить позицию?
var ms:TMemoryStream;
jp:TJPEGImage;
begin
Screenshot;
ms:=TMemoryStream.Create;
buf.kar.SaveToStream(ms);
jp:=TJPEGImage.Create;
jp.LoadFromStream(ms);
jp.SaveToFile("1.jpg");
end;
← →
NBAH1990 (2010-03-08 21:37) [18]var ms:TMemoryStream;
jp:TJPEGImage;
begin
Screenshot;
ms:=TMemoryStream.Create;
buf.kar.SaveToStream(ms);
jp:=TJPEGImage.Create;
ms.Position;
jp.LoadFromStream(ms);
jp.SaveToFile("1.jpg");
jp.Free;
ms.Free;
end;
Не работает так)) ТАк и не придумал куда привинтить этот позишн. Дайте кто нить полный ответ плиз
← →
NBAH1990 (2010-03-08 21:39) [19]
var ms:TMemoryStream;
jp:TJPEGImage;
begin
Screenshot;
ms:=TMemoryStream.Create;
buf.kar.SaveToStream(ms);
jp:=TJPEGImage.Create;
ms.Position:=0;
jp.LoadFromStream(ms);
jp.SaveToFile("1.jpg");
jp.Free;
ms.Free;
end;
Во вот так получилось)) Сам допёр, теперь по сети попробую.
← →
Anatoly Podgoretsky © (2010-03-08 22:06) [20]> NBAH1990 (08.03.2010 21:39:19) [19]
Не надо допирать, надо в справке смотреть.
← →
DVM © (2010-03-08 22:58) [21]
> NBAH1990 (07.03.10 20:13)
http://delphimaster.net/view/6-1227604925/ смотри пример от slym
← →
nikih22 © (2010-03-09 06:07) [22]NBAH1990 Вижу делаешь программу уделенного администрарования?
← →
nikih22 © (2010-03-09 06:11) [23]Если есть желание обьединиться пиши на почту!!!!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.061 c