Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка при передачи данных по TCP протоколу [D7, WinXP]


Страницы:   1 2

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]

А что там по ссылкам?
И в читаемом ли виде?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо