![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при передачи данных по TCP протоколу [D7, WinXP]
NBAH1990 © (2010-03-07 20:13:00)Программа делает скриншот экрана и по TcpClient отправляет картинку в Packed record, далее её принимает TcpServer и выводит на Timage. Всё отлично работает, когда клиент и сервер находятся в одном приложении (на одной форме).
http://www.rapidshare.ru/1403795
Но когда я разделил их в 2 приложения, на серверную часть доходят пустые пакеты, либо вообще не доходят. На клиентской части данные правильно записываются в пак, т.к я проверил это сохранением в файл. Проблема именно на сервере. Вот исходник сервера и клиента
http://www.rapidshare.ru/1403801
Стою в тупике, просто нет никаких идей. В исключения антивирусника (NOD32 4) добавил, брэндмауер отключен.
Помогите плиз.
nikih22 (2010-03-09 06:11:00) [1]Если есть желание обьединиться пиши на почту!!!!
nikih22 (2010-03-09 06:07:00) [2]NBAH1990 Вижу делаешь программу уделенного администрарования?
DVM (2010-03-08 22:58:00) [3]
> NBAH1990 (07.03.10 20:13)
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1227604925&n=4смотри пример от slym
Anatoly Podgoretsky (2010-03-08 22:06:00) [4]> NBAH1990 (08.03.2010 21:39:19) [19]
Не надо допирать, надо в справке смотреть.
NBAH1990 (2010-03-08 21:39:00) [5]
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;
Во вот так получилось)) Сам допёр, теперь по сети попробую.
NBAH1990 (2010-03-08 21:37:00) [6]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:31:00) [7]А как определить позицию?
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;
Плохиш (2010-03-08 21:16:00) [8]
> NBAH1990 (08.03.10 21:13) [15]
>
>
> > ms.position
>
>
> Что это значит?
Что все операции с данными потока производятся от текущей позиции.
NBAH1990 (2010-03-08 21:13:00) [9]
> ms.position
Что это значит?
Anatoly Podgoretsky (2010-03-08 20:22:00) [10]> NBAH1990 (08.03.2010 19:32:13) [13]
ms.position
NBAH1990 (2010-03-08 19:32:00) [11]
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 19:15:00) [12]> Юрий Зотов (08.03.2010 17:41:09) [9]
Но зато быстро!
NBAH1990 (2010-03-08 18:47:00) [13]
> сохрани в MemoryStream, а из него получи буфер, буфер передай
> по tcp, потом обратно в MemoryStream и читай из него jpeg
Буду признателен если покажете на примере)
CrytoGen (2010-03-08 18:22:00) [14]сохрани в MemoryStream, а из него получи буфер, буфер передай по tcp, потом обратно в MemoryStream и читай из него jpeg
Юрий Зотов (2010-03-08 17:41:00) [15]> NBAH1990 (08.03.10 15:24) [5]
Поле kar:TJPEGImage передается, как адрес объекта. Понятно, что по этому адресу в ДРУГОЙ программе находится не нужный объект, а что-то совсем другое. Возможно, что и вовсе ничего не находится.
На другой машине - тем более.
Anatoly Podgoretsky (2010-03-08 16:10:00) [16]> Вася (08.03.2010 16:08:07) [7]
Так ничего и не передается.
Вася (2010-03-08 16:08:00) [17]
> В виде файла не предлагать, слишком медленно.)
Зато в виде адреса (чем по сути является kar:TJPEGImage) - быстро. Правда на другом компьютере этот адрес врядли представляет сколько-нибудь интересную информацию
Так что можно выбирать, как лучше - быстро, или чтобы работало
Игорь Шевченко (2010-03-08 15:44:00) [18]
> А разве TJpeg как то не корректно передаётся?
а объекты вообще некорректно передаются.
> А как его тогда передавать?
Самое простое - в виде файла.
> В виде файла не предлагать, слишком медленно
Всем нелегко
NBAH1990 (2010-03-08 15:24:00) [19]Пак вот такой
pack=packed record
kar:TJPEGImage;
hv:string[15];
end;
Var buf:pack;
Вот так передаю
Client1.WriteBuffer(buf,SizeOf(buf));
Читаю вот так
AThread.Connection.ReadBuffer(bufpr,SizeOf(bufpr));
А разве TJpeg как то не корректно передаётся? А как его тогда передавать? В виде файла не предлагать, слишком медленно.)
Anatoly Podgoretsky (2010-03-08 08:57:00) [20]> NBAH1990 (07.03.2010 20:13:00) [0]
А что там по ссылкам?
И в читаемом ли виде?