Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
ВнизРисунок через сокет Найти похожие ветки
← →
Romm © (2007-04-15 11:30) [0]******************************************************************************** **********************************
Я как-то говорил о этой проблеме, но решил повториться, т.к. мне никто не дал вразумительного ответа.
Подскажите пожалуйста как с сервера передать клиенту снимок рабочего стола, не сохраняя его на харде?
Спасиб
← →
homm © (2007-04-15 11:52) [1]> *************************************************************************
> ******* **********************************
Что ЭТО?
← →
Virgo_Style © (2007-04-15 11:57) [2]Romm © (15.04.07 11:30)
Подскажите пожалуйста как с сервера передать клиенту снимок рабочего стола, не сохраняя его на харде?
Самурай без меча подобен самураю с мечом - но без меча.
Аналогично, передать снимок, не сохраняя его на харде, можно так же, как и сохраняя - но не сохраняя.
← →
Romm © (2007-04-15 12:14) [3]
> Что ЭТО?
пароль :)
> Virgo_Style © (15.04.07 11:57) [2]
ясно, но непонятно :)
Может я что-то не понимаю, но! программа должна передавать, для начала, снимков 10 в секунду. Представь, что запрос приходит на машину с 50Мб памяти, какая же будет производительность?А вот если снимочек сделать-тут же передать и освободить память...Да кому я обьясняю-то? Вы и так все понимаете. Короч, хорош глумиться, совет лучше дайте :))
← →
MikePetrichenko © (2007-04-15 12:29) [4]Hm..
800х600х8bit (самое хреновое граф разрешение и передача цвета) = 3Mb
Т. е. вы собираетеся за секунду передать 30 мегабайт на машину (с машины) с 50 мегабайтами памяти....
Начните с оптимизации.
← →
Romm © (2007-04-15 12:35) [5]
> MikePetrichenko © (15.04.07 12:29) [4]
ну про машину с 50 Мб - это просто пример, но все же. Локальная сеть. Вообще это теория про снимки моя, поэтому может из нее не выйдет ничего. Но вот, что как-то можно просматривать действия, совершаемые на удаленной машине я знаю. Это мне и нужно. Если есть теории лучше, чем 10 снимков/сек - предложите плиз.
PS. Видел я прогу которая штампует до 10000 экземпляров/сек - как работает не знаю, но факт.
← →
проходивший мимо (2007-04-15 15:32) [6]делаешь каким-то умным способом снимок с экрана (мой способ 1 снимок делает около 1-1,5 секунд)
сохраняешь его, например вBitMap:TBitmap;
Str:TStream;
на севере:Bitmap сохраняешь в Str
Socket.SendStream(str) //в названии этой функции "SendStream" могу ошибиться
на клиенте:
событие о том, что серве что-то отрпавил нам:принимаем поток и делаем с ним чё-нить
← →
Romm © (2007-04-15 15:46) [7]
> проходивший мимо (15.04.07 15:32) [6]
спасиб, а можно не сохраняя сразу передать? Меня заклинило конечно на этом несохранении, но подругому ведь не получится..
← →
DrPass © (2007-04-15 15:59) [8]
> заклинило конечно на этом несохранении
Да, заклинило. Что плохого в сохранении в поток? Это ж не на диск писать
← →
Romm © (2007-04-15 16:04) [9]А! Ну в поток-то можно, наверно :) Нужно попробовать :))
← →
homm © (2007-04-15 17:34) [10]> 800х600х8bit (самое хреновое граф разрешение и передача
> цвета) = 3Mb
Вообще-то 480 кб.
← →
Romm © (2007-04-17 13:01) [11]Мастера, отправляю поток с сервера клиенту таким образом:
procedure TMainForm.GrabScreen;
var
DeskTopDC: HDc;
DeskTopCanvas: TCanvas;
DeskTopRect: TRect;
Bitmap:TBitmap;
Str:TStream;
begin
DeskTopDC := GetWindowDC(GetDeskTopWindow);
DeskTopCanvas := TCanvas.Create;
DeskTopCanvas.Handle := DeskTopDC;
DeskTopRect := Rect(0, 0, Screen.Width, Screen.Height);
Bitmap:=TBitmap.Create;
Bitmap.Canvas.CopyRect(DeskTopRect, DeskTopCanvas, DeskTopRect);
Str:=TStream.Create;
Str.Write(Bitmap,sizeof(Bitmap));
ServerSocket1.Socket.SendStream(str);
ReleaseDC(GetDeskTopWindow, DeskTopDC);
Bitmap.Free;
Str.Free;
end;
правильно?
Вот только у TClientSocket я не нашел события Socket.ReceiveStream. Есть Socket.ReceiveText, Socket.ReceiveBuf и Socket.ReceiveLength, а как поток принять? подскажите пожалуйста
← →
grisme © (2007-04-17 13:12) [12]юзай RecieveBuf - фактически поток и получишь
RecieveText ограничивает ведь до строковой переменной.
← →
Рамиль © (2007-04-17 13:15) [13]Ты ответы в своих темах читаешь?
http://delphimaster.net/view/2-1175695178/
← →
Romm © (2007-04-17 13:26) [14]
> Рамиль © (17.04.07 13:15) [13]
сорь, я уж и забыл про ту тему :( Щас пробую
← →
Сергей М. © (2007-04-17 13:36) [15]
> Romm © (17.04.07 13:01) [11]
> правильно?
Нет, неправильно.
Читай справку (она не для Пушкина, меж прочим, писана) :
Note: The Stream passed as a parameter to SendStream becomes “owned” by the windows socket object. The Windows socket object frees the stream when it is finished with it. Do not attempt to free the stream after it has been passed as a parameter.
← →
Romm © (2007-04-17 13:45) [16]
> Do not attempt to free the stream after it has been passed
> as a parameter
эээ.. мне кажется, что тут написано, что не нужно уничтожать "Str" правильнО? :))
← →
Сергей М. © (2007-04-17 14:16) [17]
> мне кажется
Что значит "кажется" ?
Подчеркнутая строка вроде бы не двусмысленна в своем содержании)
← →
Romm © (2007-04-17 14:20) [18]что-то не получается ничего :(( посмотрите пожалуйста, может бы я где нибудь ошибку допустил:
if cmd="go" then
begin
Timer1.Enabled:=true;
end;
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
GrabScreen;
end;
procedure TMainForm.GrabScreen;
var
DeskTopDC: HDc;
DeskTopCanvas: TCanvas;
DeskTopRect: TRect;
Bitmap:TBitmap;
Str:TStream;
Size:int64;
begin
DeskTopDC := GetWindowDC(GetDeskTopWindow);
DeskTopCanvas := TCanvas.Create;
DeskTopCanvas.Handle := DeskTopDC;
DeskTopRect := Rect(0, 0, Screen.Width, Screen.Height);
Bitmap:=TBitmap.Create;
Bitmap.Canvas.CopyRect(DeskTopRect, DeskTopCanvas, DeskTopRect);
Str:=TStream.Create;
Str.Write(Bitmap,sizeof(Bitmap));
Size:=Str.Size;
ServerSocket1.Socket.SendBuf(Size,sizeof(Size));
ServerSocket1.Socket.SendStream(str);
ReleaseDC(GetDeskTopWindow, DeskTopDC);
Bitmap.Free;
end;
*********
10:
begin
sc.Socket.SendText("go");
Reciveing:=false;
VidioForm.ShowModal;
end;
procedure TMainForm.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
Buf: array[0..8191] of byte;
RecivedSize: integer;
Size: int64;
AllSize: int64;
Stream: TMemoryStream;
Bitmap:TBitmap;
begin
if not Reciveing then
begin
TClientSocket(Sender).Socket.ReceiveBuf(Size, SizeOf(Size));
Reciveing := true;
Stream := TMemoryStream.Create;
AllSize := 0;
end
else
begin
RecivedSize := TClientSocket(sender).Socket.ReceiveBuf(Buf, SizeOf(Buf));
Stream.Write(Buf, RecivedSize);
inc(AllSize, RecivedSize);
if AllSize = Size then
begin
Reciveing := false;
Bitmap:=TBitmap.Create;
Stream.Position := 0;
Bitmap.LoadFromStream(Stream);
Stream.Free;
VidioForm.Canvas.Assign(Bitmap);
Bitmap.Free;
end;
end;
end;
ошибка возникает когда сервер пытается передать данные клиенту
← →
Steep © (2007-04-17 14:22) [19]У меня такой подвопрос, а если сжимать в jpeg а потом передавать? так можно
jpg.Assign(bmp);
...
Send
...
jpg.free;
← →
Romm © (2007-04-17 14:24) [20]
> Steep © (17.04.07 14:22) [19]
это верно, но займусь я этим когда программа будет подавать малейшие признаки жизни :)
← →
Romm © (2007-04-17 14:26) [21]
> ошибка возникает когда сервер пытается передать данные клиенту
Abstract Error
← →
Сергей М. © (2007-04-17 14:27) [22]
> ошибка возникает
Какая ? И что показывает отладчик ?
← →
Сергей М. © (2007-04-17 14:28) [23]
> Abstract Error
Потому что TStream - абстрактный класс.
Пользуй , к примеру, TMemoryStream
← →
Рамиль © (2007-04-17 14:31) [24]
> Romm © (17.04.07 14:26) [21]
>
> > ошибка возникает когда сервер пытается передать данные
> клиенту
>
> Abstract Error
Это называется смотрю в книгу, вижу фигу.
В клиенте TMemoryStream просто так что ли? По аналогии можно было додумать.
← →
Romm © (2007-04-17 14:36) [25]
> Сергей М. © (17.04.07 14:28) [23]
> Рамиль © (17.04.07 14:31) [24]
спасиб-исправил :)
только опять ошибка отправки данных с сервер сокета.
сокет нужно как-то настраивать на клиент, если клиент один?
windows говорит, что нет адреса on API "send"
← →
Сергей М. © (2007-04-17 14:41) [26]ServerSocket.Socket.Connections[такое-то соединение].SendЧегоТоТам(..)
← →
Romm © (2007-04-17 14:45) [27]вот и я только что туда же пришел :) проверяю...
← →
Steep © (2007-04-17 14:53) [28]
> У меня такой подвопрос, а если сжимать в jpeg а потом передавать?
> так можноjpg.Assign(bmp);...Send...jpg.free;
Собственно это был вопрос мастерам :) так можно?
← →
Сергей М. © (2007-04-17 14:55) [29]
> Steep © (17.04.07 14:53) [28]
> так можно?
А подумать ?)
← →
Steep © (2007-04-17 14:56) [30]нет я подумал что можно, просто я с сокетом (и вобще с сетью) не работал и не знаю как он функционирует :(
← →
Сергей М. © (2007-04-17 14:59) [31]
> просто я с сокетом (и вобще с сетью) не работал и не знаю
> как он функционирует
А причем здесь сокеты ?
Если некий метод некоего объекта требует в кач-ве параметра некий объект-наследник класса TStream, то можно ли подсунуть этому методу некий объект, НЕ являющийся таковым ?
Подумай)
← →
Romm © (2007-04-17 15:02) [32]О, боже! Теперь клиент не работает :(( щас с ума сойду :)
Access violation at address 004798C3 in module "Client.exe". Read of address 7836663
← →
Сергей М. © (2007-04-17 15:04) [33]
> Romm © (17.04.07 15:02) [32]
см. меню Search -> Find Error ..
← →
Рамиль © (2007-04-17 15:12) [34]object Form1: TForm1
Left = 582
Top = 308
Width = 276
Height = 125
Caption = "Form1"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object ServerSocket: TServerSocket
Active = True
Port = 4050
ServerType = stNonBlocking
OnClientRead = ServerSocketClientRead
Left = 16
Top = 8
end
end
object Form2: TForm2
Left = 274
Top = 204
Width = 761
Height = 601
Caption = "Form2"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Image: TImage
Left = 8
Top = 32
Width = 713
Height = 513
Stretch = True
end
object Button3: TButton
Left = 152
Top = 0
Width = 75
Height = 25
Caption = "Recive"
TabOrder = 0
OnClick = Button3Click
end
object Button1: TButton
Left = 56
Top = 0
Width = 75
Height = 25
Caption = "Connect"
TabOrder = 1
OnClick = Button1Click
end
object Button2: TButton
Left = 264
Top = 0
Width = 75
Height = 25
Caption = "Disconnect"
TabOrder = 2
OnClick = Button2Click
end
object ClientSocket: TClientSocket
Active = False
ClientType = ctNonBlocking
Host = "127.0.0.1"
Port = 4050
OnRead = ClientSocketRead
Left = 16
Top = 8
end
end
← →
Romm © (2007-04-17 15:12) [35]
procedure TMainForm.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
Buf: array[0..8191] of byte;
RecivedSize: integer;
Size: int64;
AllSize: int64;
Stream: TMemoryStream;
Bitmap:TBitmap;
begin
if not Reciveing then
begin
TClientSocket(Sender).Socket.ReceiveBuf(Size, SizeOf(Size));
Reciveing := true;
Stream := TMemoryStream.Create;
AllSize := 0;
end
else
begin
RecivedSize := TClientSocket(sender).Socket.ReceiveBuf(Buf, SizeOf(Buf));
Stream.Write(Buf, RecivedSize); // компилятор тут останавливается!
inc(AllSize, RecivedSize);
if AllSize = Size then
begin
Reciveing := false;
Bitmap:=TBitmap.Create;
Stream.Position := 0;
Bitmap.LoadFromStream(Stream);
Stream.Free;
VidioForm.Canvas.Assign(Bitmap);
Bitmap.Free;
end;
end;
end;
← →
Romm © (2007-04-17 15:21) [36]
> Рамиль © (17.04.07 15:12) [34]
а это что такое? :)
← →
Рамиль © (2007-04-17 15:23) [37]А подумать?
← →
Сергей М. © (2007-04-17 15:23) [38]
> Stream.Write(Buf, RecivedSize); // компилятор тут останавливается!
Компилятор никогда не останавливается - он делает свою работу до конца)
А по сабжу - сделай переменную Stream статической.
← →
Romm © (2007-04-17 15:27) [39]
> статической
это опять на Stream поменять тип?
> А подумать?
просто я, извени, ничего полезного от туда не узнал :) А может просто плохо прочитал :)
← →
Рамиль © (2007-04-17 15:32) [40]
> Romm © (17.04.07 15:27) [39]
Это дфмки от моего рабочего примера.
А так Сергей прав, скорее всего в разрушенный/несозданный Stream пытаешься писать.
← →
Сергей М. © (2007-04-17 15:32) [41]
> это опять на Stream поменять тип?
Причем здесь тип ?
Сейчас эта переменная у тебя локальная, время ее жизни равно времени работы метода, в котором она объявлена. А тебе надо чтобы эта переменная была жива по кр.мере все то время, пока жив объект TMemoryStream, на который ссылается значение этой переменной. Для этого как раз и подходят статические переменные, потому что время их жизни равно времени работы приложения.
← →
Romm © (2007-04-17 15:33) [42]
> Stream := TMemoryStream.Create;
как же так?
← →
Romm © (2007-04-17 15:34) [43]
> Сергей М. © (17.04.07 15:32) [41]
> Рамиль © (17.04.07 15:32) [40]
ок, я просто не понял с лету :)
← →
Сергей М. © (2007-04-17 15:36) [44]
> как же так?
Что "как же так" ?
Что тебя смущает в этой строчке ?
← →
Romm © (2007-04-17 15:40) [45]
> Сергей М. © (17.04.07 15:36) [44]
да не, все ок. ошибка пошла пить чай. Только на форме графика не отображается...VidioForm.Canvas.Assign(Bitmap);
так вообще делать можно? :) или лучше TImage на всю форму растянуть?
← →
Romm © (2007-04-17 15:43) [46]Тьфу, а походу перегрелся:
я прогу тестирую на 1 компе. сервер и клиент на одной машине. Ясно, что если у меня форма на весь экран - она себя и отображает... вух, буду надеяться, что работает...
← →
Сергей М. © (2007-04-17 15:46) [47]
> так вообще делать можно?
А сам-то как думаешь ?
← →
Romm © (2007-04-17 15:48) [48]я думаю, что можно, но не очень-то уверен :)
← →
Сергей М. © (2007-04-17 15:49) [49]Если исключение не схлопотал, значит можно)
А по идее ты должен был его схлопотать)
← →
Romm © (2007-04-17 15:54) [50]да вроде все компилируется :)
кстати, я пробовал jpeg.assign(bitmap) - все компилируется.. дельфи потупело?? или компилятор ослеп?
← →
Сергей М. © (2007-04-17 15:56) [51]
> или компилятор ослеп?
А что он, компилятор, по-твоему, должен был увидеть криминального в этих строчках ?)
← →
Romm © (2007-04-17 16:17) [52]
> криминального
ну например несоответствие типов, или это я придумал? :)
← →
Сергей М. © (2007-04-17 16:23) [53]Типы-то как раз соответствуют)
И компилятор это видит, потому и не "ругается"
А вот в ран-тайм грабли тебе, думаю, обеспечены)
Ну а к ран-тайму компилятор уже не имеет никакого отношения - к.г., "мавр сделал своё дело")
← →
Romm © (2007-04-17 16:25) [54]Пока Вы не ушли буду заполнять пробелы в своем мозге! :) С вашей помощью конечно :)
Итак, посоветуйте мне пожалуйста каким образом лучше всего и проще создать файл, например *.dat (главное чтобы содержимое блокнотом нельзя было прочитать) :)
assignfile
closefile
?
пытался через потоки - около часа кодил и ниче не накодил :) руки-то кривые :)
ну а TStrings/TStringsList тут, кажется, не к месту
← →
Romm © (2007-04-17 16:27) [55]
> Сергей М. © (17.04.07 16:23) [53]
значит TImage
?
а мерцать не будет, если каждую секунду будет обновляться? Мне кажется, что будет... :(( Что же делать?
← →
Сергей М. © (2007-04-17 16:39) [56]
> Romm © (17.04.07 16:25) [54]
> главное чтобы содержимое блокнотом нельзя было прочитать
Создай пустой файл - ни один "блокнот" его не "прочитает")
> значит TImage
Чего "значит TImage" ?)
← →
Romm © (2007-04-17 16:49) [57]
> Чего "значит TImage"
цель:
на форме изобразить :) рабочий стол удаленного компьютера.
для этого я делал так:VidioForm.Canvas.Assign(Bitmap);
, где VidioForm-форма(экран)
и непосредственно "на нее" выгружаем битмапку, но
> грабли тебе, думаю, обеспечены
, поэтому может быть так:
Image1.Picture.Assign(Bitmap);
?
> Создай пустой файл
пароли в фале будут :)
и все таки каким способом лучше?
я тут погаричился и "снес" весь код записи в файл и проверки пароля, поэтому похвастаться нечем :)
← →
Сергей М. © (2007-04-17 16:57) [58]
> поэтому может быть так:
> Image1.Picture.Assign(Bitmap);
Это уже ближе к истине.
> пароли в фале будут
Ты уж потрудись не месить разнородные вопросы в одну кучу)
Вынеси свои вопросы по работе с файлами в отдельную ветку.
← →
Romm © (2007-04-17 17:02) [59]
> отдельную ветку
> пока Вы не ушли
> ближе к истине
но не есть истина?
← →
Сергей М. © (2007-04-17 17:03) [60]Проверь сам)
← →
Romm © (2007-04-17 17:05) [61]
> Проверь сам
с радостью бы, да
> я прогу тестирую на 1 компе. сервер и клиент на одной машине
:((
← →
Сергей М. © (2007-04-17 17:09) [62]
> прогу тестирую на 1 компе. сервер и клиент на одной машине
И что ?
Это как-то мешает разработке приложений для их эксплуатации в реальных условиях ?
← →
Romm © (2007-04-17 17:16) [63]
> Сергей М. © (17.04.07 17:09) [62]
> Ясно, что если у меня форма на весь экран - она себя и отображает
хотя...
← →
Romm © (2007-04-17 17:46) [64]вот и проверил. сервер файлы шлет, клиент принимает, а на форме/картинке ничего не отображается. Вот незадача-то...
← →
SlymRO © (2007-04-18 06:14) [65]Romm © (17.04.07 17:46) [64]
Возможно потому что ClientSocket1Read не вся посылка, а ее часть...
Ты считаешь что на один ServerSocket1.Socket.SendStream(str);
придется один ClientSocket1Read? нет это самое основное заблуждение! ClientSocket1Readов может быть много
← →
SlymRO © (2007-04-18 10:02) [66]Лови рабочий пример...
Мануал: Скопировать содержимое поста в файл mail.eml и открыть
Содержимое поста:
From: Slym
To: All
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----------1259B1FADE1354"
------------1259B1FADE1354
Content-Type: text/plain; charset=windows-1251
For all
------------1259B1FADE1354
Content-Type: application/octet-stream;
name="NetScreen.rar"
Content-transfer-encoding: base64
Content-Disposition: attachment;
filename="NetScreen.rar"
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
vBiUYr3EPXsAQAcA
------------1259B1FADE1354--
← →
Romm © (2007-04-18 16:35) [67]
> SlymRO © (18.04.07 06:14) [65]
понял, а как быть?
> SlymRO © (18.04.07 10:02) [66]
вот это не понял :)
← →
SlymRO © (2007-04-19 07:48) [68]Romm © (18.04.07 16:35) [67]
вот это не понял
И чего не понятно?
1. создать файл mail.eml
2. Скопировать с одержимое поста в созданный файл
3. Сохранить сайл и запустить, откроется письмо в почтовике по умолчанию
4. В письме аттачмент с кодом
← →
Romm © (2007-04-19 07:53) [69]
> SlymRO © (19.04.07 07:48) [68]
ну шифровальщик млин... :)
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
Память: 0.65 MB
Время: 0.042 c