|
#1
|
|||
|
|||
Работа с сокетами
Сделал связь клиент сервер, добавил функции перезагрузки компа и т.п.
Так вот вопрос: Можно ли реализовать удаленное управление файловой системой... тоесть типа тотал командер только по чужому компу, ну и удаленное управление реестром. Такое возможно реализовать? Посоветуйте исходники, статьи или литературу по этой теме. |
#2
|
||||
|
||||
ФС (чтоб не изобретать велосипед) - FTP (по Indy).
Реестр можно и вручную написать, не так то сложно. Радмин пишешь, или что? Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
|||
|
|||
Ну практически радмин, работаю системником, и одна из моих задач обновлять у каждого юзера на компе некоторое количество файлов, и бегать с флешкой по этажам, отвлекая их от своей работы - глупо, вот решил сделать так, + быстрое исправление последствий криворукости многих... ну и начальнику нужно чтобы был контроль за работой сотрудников, поэтому буду думать: или скриншотить рабочие столы время от времени, либо лог работы для каждого компа вести. Ну вообщем нужен почти максимальный контроль удаленного компьютера. Напишу - начальник обещал премию)) + мне практика delphi программирования, с сокетами раньше работал только поверхностно, поэтому прошу литературку по теме: насчет написание редактора реестра, да и ФС
|
#4
|
||||
|
||||
А чем готовые программы не устроили?
По литературе - есть гугл. Что используешь для сокетов? TServerSocket/TClientSocket, Indy, WinSock? Для реестра - класс TRegistry, или WinAPI-функции - что тебе удобнее. Для файловой системы - лучше, конечно, FTP, но если нет желания его использовать - есть тот же WinAPI. Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#5
|
|||
|
|||
Готовые не охото юзать.
Использую TServerSocket и TClientSocket гугл помог, вроде разобрался. Если будут вопросы задам в этой теме Вот появился вопрос: Передаю скриншот рабочего стола сервера, есть ли разница в скорости при использование TServerSocket и TClientSocket, Indy или WinSock? Последний раз редактировалось Kingcss, 02.07.2011 в 17:21. |
#6
|
||||
|
||||
Скорости чего? Сети - нет, так как протокол единый (TCP). А вот задержка между выполнением отправки и попаданием в аппаратный буфер будет разной. Если критично - лучше использовать WinSock, но там будут разницы в десятки, если не единицы, миллисекунд - думаю, не столь важно.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#7
|
|||
|
|||
тогда уж все на сокетах будет, щас пытался сделать передачу файла и выдает ошибку((
Сервер(он отправляет): PHP код:
PHP код:
|
#8
|
||||
|
||||
Во-первых, какую ошибку?
Во-вторых: Код:
var dw: HWND; dc: HDC; bmp: TBitMap; begin bmp := TBitmap.Create; bmp .Width := Screen.Width; bmp .Height := Screen.Height; dw := GetDesktopWindow; dc := GetDC(dw); BitBlt(bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, dc, 0, 0, SRCCOPY); ReleaseDC(dw, dc); // ... end; Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#9
|
|||
|
|||
выдает ошибку на строке:
PHP код:
PHP код:
|
#10
|
||||
|
||||
Так текст ошибки можно?
И, да, отправка с сервера выглядит несколько иначе. Тебе всем клиентам надо разослать, или конкретному? Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#11
|
|||
|
|||
project server.exe raised exception class ESocketError with Message 'Windows socket error:Запрос на отправку и получение данных (when sending on a datagram socket using a sendto call) no address was supplied(10057), on API 'send". Process stoped
Мне надо чтобы данный сервер, подключенный данный момент прислал мне клиенту (тоесть мне) вот этот файл |
#12
|
||||
|
||||
Я, наверное, буду К.О., но к серверу могут подключиться НЕСКОЛЬКО клиентов. Обычно клиент отправляет запрос, а сервер "не отходя от кассы" на него отвечает. В событие OnClientRead у сервера (вроде как) передаётся параметр Socket, вот в него и надо отправлять.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#13
|
|||
|
|||
клиент отправляет серверу команду "GrabWindow" и сервер выпоняет процедуру grabwindow описаную выше
|
#14
|
||||
|
||||
Ну так. В эту процедуру параметром передавай сокет, который будет передан в событие сервера.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#15
|
|||
|
|||
Попробовал другой вариант:
PHP код:
Если использую вторую строку: MS.LoadFromFile(Edit1.Text); то все нормально, а если Image1.Picture.Bitmap.SaveToStream(ms); то пишет размер 0 почему так? |