Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Ошибка при передачи данных по 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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.068 c
2-1273431911
FIL-23
2010-05-09 23:05
2010.08.27
как пользоваться sql


2-1274121378
man_of_sense
2010-05-17 22:36
2010.08.27
Компонент WebBrowser


15-1268429405
Юрий
2010-03-13 00:30
2010.08.27
С днем рождения ! 13 марта 2010 суббота


2-1265836336
Dmitrijan
2010-02-11 00:12
2010.08.27
Загрузка exe файла в Memo


2-1270231741
Vigi
2010-04-02 22:09
2010.08.27
Информация о доступных серверах!