![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Надо написать сервер-клиент для запуска (вспроизведения, остановки) видео на удаленном компе. Как написать самый простой плеер я знаю, в инете полно исходников и уроков, а вот как управлять им по сети - ничего не могу найти.
Смотрел кучу форумов и ничего не нашел. Надо с одного компа запускать видео одновременно на других. Требуется только управление написанным плеером. Помогите кто знает. Плиз... |
|
#2
|
||||
|
||||
|
мм... выбор файла тоже надо осуществлять по сети, или это можно сделать заранее, при установке и настройке? И для чего оно надо?
|
|
#3
|
|||
|
|||
|
Цитата:
Я вообще думаю разумнее сделать файл-конфигурацию, в котором указано какому плееру (клиенту) какое видео запустить, а в сервере выбирается этот конфиг и запускается все что там прописано. Для чего это надо? У нас кинотеатр небольшой, там три проектора составлены в одну панораму. Фильм разбит на три файла (девый, центр, правый). Вот и требуется эти три файла запустить на трех компах одновренменно, чтобы картинка на какой-либо проекции не затупила... |
|
#4
|
||||
|
||||
|
Можно попробовать на каждом компе найти окно плеера и нажать кнопку "start" (см. FindWindow, MouseEvent или SetCursorPos+GetWindowFromPoint+SendMessage)
Последний раз редактировалось Bargest, 27.10.2010 в 16:50. |
|
#5
|
|||
|
|||
|
Умом понимаю как сделать, но вот знаний не хватает..
Надо как-то сделать форму с плеером WindowsMedia, думаю этого хватит для avi и через клиент-сервер сделать просто отправку команды Play. Но вот как работать с клиент-сервером - понятия не имею.... |
|
#6
|
||||
|
||||
|
Пишешь клиента и сервера, хоть на WinSock. клиенты - на компах с проекторами. сервер - у тебя. Сначала подключаешься к серверу со всех трех компов, потом при нажатии на кнопку на сервере - отсылает всем троим например "1". Клиент же как только получает этот заветный "1" ставит мышь на кнопку PLAY в виндус медия плеере и жмет на нее.
пример на апи: Сервер: Код:
uses WinSock;
var
sServer: TSOCKET
sClient: array[0..2] of TSOCKET;
serverAddr, clientAddr: sockaddr_in;
isize, i : integer;
...
begin
if WSAStartup(MAKEWORD(2, 0), aboutWSA) = 0 then
;
sServer := socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
if sServer = INVALID_SOCKET then
begin
Form19.Memo1.Lines.add('Ошибка создания сокета');
exit;
end;
imode := 1;
iOcTLsocket(sServer, FIONBIO, imode);
serveraddr.sin_addr.S_addr := htonl(INADDR_ANY);
serveraddr.sin_family := AF_INET;
serveraddr.sin_port := htons(12345); // порт, любой
if bind(sServer, serveraddr, sizeof(serveraddr)) = SOCKET_ERROR then
begin
Form19.Memo1.Lines.add('Ошибка бинд');
exit;
end;
if listen(sServer, 4) = SOCKET_ERROR then
begin
Form19.Memo1.Lines.add('Ошибка прослушки');
exit;
end;
Form19.Memo1.Lines.add('Server Started');
isize := sizeof(clientaddr);
for i:=0 to 2 do
begin
sClient[i]:=accept(sServer,clientaddr,isize)
Form19.Memo1.Lines.Add('Подключен клиент '+inttostr(i));
end;
end;потом при нажатии кнопки пишешь Код:
var i,j:byte; ... j:=1; for i:=0 to 2 do send(sClient[i],j,1,0); ... Клиент: Код:
uses WinSock;
...
var
addr:sockaddr_in;
sClient:TSOCKET;
isize:integer;
j:byte;
...
begin
if WSAStartup(MAKEWORD(2, 0), aboutWSA) = 0 then
;
sClient:=socket(AF_INET, SOCK_STREAM,IPPROTO_IP);
if sClient = INVALID_SOCKET then
begin
Form1.Memo1.Lines.Add('Ошибка создания сокета');
exit;
end;
Dword(аddr.sin_addr.S_un_b) := inet_addr(PAnsiChar(st)); // st - строка с текстовым представлением IP-адреса типа '192.168.1.1'. З.Ы. лучше поискать другой метод :-)
addr.sin_family := AF_INET;
addr.sin_port := htons(12345); // тот же порт, что на сервере
if (connect(sClient, addr, sizeof(addr)) = socket_error) then
begin
Form1.Memo1.Lines.Add('Ошибка подключения');
exit;
end;
isize := recv(sClient, j, 1, 0);
if j = 1 then
begin
//запускаем наш плеер
end;
end;не пугаться - клиент будет выглядеть "зависшим" пока к нему не придут данные, а сервер - пока к нему не подключатся все три клиента. Это простейший вариант на АПИ. Взято по большей части из книжки Фленова "Делфи глазами хакера". Последний раз редактировалось Bargest, 29.10.2010 в 21:38. |