Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

РНР: связь двух компов через хостинг

25K
18 октября 2007 года
ЙэвгениЙ
22 / / 19.07.2007
Необходимо реализовать такую штуку... Есть 2 компа с инетом (без внешних АйПи) и хостинг с ПХП. Необходимо что бы эти 2 машины могли обмениваться инфой. Ну грубо говоря для начала реализовать доступ к файлам друг друга. Т.е. ставятся проги на машины, которые держит коннект с хостингом и через него происходит вся передача данных.
Реально ли такое реализовать на ПХП?? Если да, то подскажите примерно в какую сторону копать?
Тупо обмениваться информацией через файлик и постоянно обновлять его не хочется... Возможно ли осуществить постоянное соединение с сервером, что бы тот по приходу данных от одного компа отсылал их на другой?...
Заранее спасибо!
251
18 октября 2007 года
SkyMаn
1.7K / / 31.07.2007
А зачем так извращаться? Можно же просто - через сокеты в любом другом языке программирования.
Что конкретно касается вопроса, то такое сделать можно, но я бы не рекоммендовал -это не самый лучший способ передавать инфу между компами...
Кстати, они в автоматическом режиме должны обмениваться или с помощь юзверя?
25K
18 октября 2007 года
ЙэвгениЙ
22 / / 19.07.2007
Цитата:
Можно же просто - через сокеты в любом другом языке программирования.


Всмысле вообще без промежуточного сервера??

Цитата:
Кстати, они в автоматическом режиме должны обмениваться или с помощь юзверя?


Как в автоматическом, так и с помощью юзера

304
18 октября 2007 года
Fenyx
707 / / 26.01.2005
Цитата: ЙэвгениЙ
Возможно ли осуществить постоянное соединение с сервером, что бы тот по приходу данных от одного компа отсылал их на другой?...
Заранее спасибо!


Реализовать можно многое - но прослушивальщик на пхп - извращение. на том же с++ можно реализовать синхронизацию компов без промежутчного серва. пхп для этого не предназначен

25K
18 октября 2007 года
ЙэвгениЙ
22 / / 19.07.2007
Цитата:
на том же с++ можно реализовать синхронизацию компов без промежутчного серва. пхп для этого не предназначен


А как, где почитать на эту тему??? Не представляю как это сделать, если компы нахдятся за НАТом, проксями и прочей ерундой. Резвее это реально? Буду плагодарен за инфу.

251
18 октября 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: ЙэвгениЙ
А как, где почитать на эту тему??? Не представляю как это сделать, если компы нахдятся за НАТом, проксями и прочей ерундой. Резвее это реально? Буду плагодарен за инфу.


Можно, все можно. Ведь компы в Сеть выходят? Другое дело, если там файрволл, и то, его тоже можно победить...

25K
19 октября 2007 года
ЙэвгениЙ
22 / / 19.07.2007
Цитата:
Можно, все можно.


Ну расскажите хоть примерно как это осуществляется???
Мои познания в сетях не особо широки... но на сколько я знаю, что бы соединитьсся с кем либо, необходимо иметь АйПи внешний. Или хотя бы маршруты прописать, если за НАТом.
В моём случае один комп находится за НАТом (возможности править маршруты нету), соответственно внешние подключения запрещены через него, а второй за НАТом да и ещё за проксёй.
Как быть?

251
19 октября 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: ЙэвгениЙ
Мои познания в сетях не особо широки... но на сколько я знаю, что бы соединитьсся с кем либо, необходимо иметь АйПи внешний.
Как быть?


Я тоже не сисадмин, но разве у компов нету айпи внешнего? ведь через какой-то шлюз они выходят в Сеть?

25K
19 октября 2007 года
ЙэвгениЙ
22 / / 19.07.2007
Цитата:
Я тоже не сисадмин, но разве у компов нету айпи внешнего?


В том то и дело, что нету. Внешний АйПи у шлюза, а не у компа. И этот шлюз все входящие подключения блокирует... Хотя даже если и не блокировал, то всё равно я хрен бы достучался до своего компа, т.к. маршрутов не прописано на мой комп.
Поправьте, если в чём неправ...

304
19 октября 2007 года
Fenyx
707 / / 26.01.2005
Цитата: ЙэвгениЙ
В том то и дело, что нету. Внешний АйПи у шлюза, а не у компа. И этот шлюз все входящие подключения блокирует... Хотя даже если и не блокировал, то всё равно я хрен бы достучался до своего компа, т.к. маршрутов не прописано на мой комп.
Поправьте, если в чём неправ...


попробуй задай этот же вопрос на форуме сишников, тут навряд помогут

304
19 октября 2007 года
Fenyx
707 / / 26.01.2005
А вооще по пхп идея обречена на провал - т.к для работы пхп нужен запрос к серву, т.е ты должен инициироват запрос с двух компов сторонними средствами, даже если ты это сделаешь следует проблема синхронизации компов. если ты будешь загружать файлы на серв ты не всегда будешь уверен в скорости передачи данных, что может привечти к тому что первый комп еще не закинет файлы на серв а второй начнет их принимать - уже потеря синхронизации. и последнее я подумал но не могу придумать как ты собираешься закидывать файлы на серв - нужно писать для этого клиент который будет посылать файлы на серв автоматически по хттп 1.0, что приравниваеться к пустой трате времени при выше перечисленных недостатках такого подхода
251
19 октября 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: ЙэвгениЙ
В том то и дело, что нету. Внешний АйПи у шлюза, а не у компа. И этот шлюз все входящие подключения блокирует... Хотя даже если и не блокировал, то всё равно я хрен бы достучался до своего компа, т.к. маршрутов не прописано на мой комп.


ууу... там подключене между ними будет прозрачно. делай коннект на шлюз..

25K
19 октября 2007 года
ЙэвгениЙ
22 / / 19.07.2007
Цитата:
т.е ты должен инициироват запрос с двух компов сторонними средствами


А если держать постоянный коннект с сервером? И ждать запроса...

Цитата:
даже если ты это сделаешь следует проблема синхронизации компов.


Ну это не проблема. Тут не требуется перекачивать файлы огромные. Думаю делать так: запрос на файл послал, вайл закачался на сервер с компа 1, файл скачался с сервера на комп 2.

Цитата:
нужно писать для этого клиент который будет посылать файлы на серв автоматически по хттп 1.0


Я и собираюсь писать клиенты...

Цитата:
что приравниваеться к пустой трате времени при выше перечисленных недостатках такого подхода


Естественно.. я согласен, что это далеко не самый рациональный способ... Но зато тут максимальная независимость от типа соединения юзеров к инету и минимальные требования к серверу (пхп поддерживает любой самый дашёвый хостинг)

Цитата:
ууу... там подключене между ними будет прозрачно. делай коннект на шлюз..


Как это так? Т.е. скажем за шлюзом находится 10 компов. Я шлю запрос на шлюз и попадаю именно на свой комп??? Не чудеса ли?...

15
19 октября 2007 года
shaelf
2.7K / / 04.05.2005
Так же все хостинги поддерживают CGI, где ты можешь собрать сишный (С++) скрипт (программку) и не заморачиваться на PHP. Если посмотреть, что такое РНР (на оффсайте), то можно догадаться, что это не серебрянная пуля!
PS Можно конечно и рубанком гвозди забивать.
353
19 октября 2007 года
Nixus
840 / / 04.01.2007
Автору проще будет написать демона на Perl, который может быть запущен на любом сервере и писать будет проще чем на C/C++.
353
19 октября 2007 года
Nixus
840 / / 04.01.2007
Цитата: SkyM@n
ууу... там подключене между ними будет прозрачно. делай коннект на шлюз..


Это технически возможно, но нужно настраивать шлюз, чтобы все обращения к шлюзу на такой-то порт шли на такой-то адрес внутри сети. Если доступ к конфигурации шлюза есть (в чем я сильно сомневаюсь), то это решается, а если нет, то подобное возможно только через посредника, к которому могут подключится обе стороны.

12
23 октября 2007 года
alekciy
3.0K / / 13.12.2005
Задача автора вполне решаема и средствами PHP. Ни кто еще не отменял дескстопный вариант пыха. PHP+GTK или PHP+Qt (хотя в Qt и так есть средства работы с сетью) и написание сикрипта синхронизации. В принципе ни чего невозможно нет и даже на PHP.

Хотя есть сомнения, что автор справиться, не лучше ли найти готовое решение? Задача совершенно не уникальна, готовые решения есть.
12
23 октября 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Nixus
то подобное возможно только через посредника, к которому могут подключится обе стороны.


Хостинг с PHP. Как вариант.

2.2K
23 октября 2007 года
e1vin
153 / / 04.06.2006
Цитата: ЙэвгениЙ
Возможно ли осуществить постоянное соединение с сервером


Если Вы собираетесь использовать HTTP-протокол (как я понял), то невозможно.

25K
23 октября 2007 года
ЙэвгениЙ
22 / / 19.07.2007
Цитата:
PHP+GTK или PHP+Qt


Это дополнительные библиотеки? Я правильно понял?

Цитата:
Хотя есть сомнения, что автор справиться, не лучше ли найти готовое решение?


Найти проще, но надо написать самому :)

25K
23 октября 2007 года
ЙэвгениЙ
22 / / 19.07.2007
Цитата:
Невозможно, т.к. протокол HTTP на это не способен.


А через сокеты???

12
23 октября 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: ЙэвгениЙ
Это дополнительные библиотеки? Я правильно понял?


Да. Интерфейсные. GUI-ой на чем то строить ведь будешь? Если в ладах с С/C++, то сразу с использованием Qt можно такие програмки наваять, если хочется на PHP, то есть соответсвующие расширения.
Обе либы платформено независимые.

12
23 октября 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: e1vin
Если Вы собираетесь использовать HTTP-протокол (как я понял), то невозможно.


Почему? Хотя смотря, что ты понимаешь под "постоянное".

А вообще это возможно. По HTTP можно организовать двухсторонний обмен данными в пределах одного соединения и при этом данные не обязательно должны идти одним куском. Могут быть и перерывы.

http://en.wikipedia.org/wiki/HTTP_Streaming
http://ajaxpatterns.org/HTTP_Streaming

2.2K
24 октября 2007 года
e1vin
153 / / 04.06.2006
alekciy, да, я знаю, но это уже аяксовые "фишки"... О которых я не подумал, да и что-то мне подсказывает, что реализовывается это все пока хоть чуть-чуть, но через з$дницу :) Или я не прав?

А вообще, видимо, немного неточно сформулирована задача. Я подумал, что "связь двух компов через хостинг" - это связь двух компов посредством обычного поочередного коннекта к веб-серверу по протоколу HTTP, к которому они имеют доступ. Видимо, немного не так?
353
24 октября 2007 года
Nixus
840 / / 04.01.2007
Цитата: e1vin
я знаю, но это уже аяксовые "фишки"


И вовсе это не ajax-фишки.

2.2K
24 октября 2007 года
e1vin
153 / / 04.06.2006
Цитата: Nixus
И вовсе это не ajax-фишки.


Ок, я выразился неправильно :) "веб-два-ноль"ные :)

12
24 октября 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: e1vin
alekciy, да, я знаю, но это уже аяксовые "фишки"... О которых я не подумал, да и что-то мне подсказывает, что реализовывается это все пока хоть чуть-чуть, но через з$дницу :) Или я не прав?


Не прав. AJAX через что у нас работает? Все тот же HTTP. Ни чего принципиально нового там нет. Я знаю народ который писал достаточно сложные приложения с использованием AJAX еще этак лет 5-6 назад, когда об Аяксе ни кто ни чего не слыхивал. Им заказчик (а они еще и сопровождают это двигло) услышав об Аяксе заявил, типа мы тоже хотим это в двигле, на что они резонно ответили, что де давно уже все там это реализованно.

Считаю этот случай крайне показательным.

12
24 октября 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: e1vin
Ок, я выразился неправильно :) "веб-два-ноль"ные :)


Фигня этот веб-два-ноль. Мыльный пузырь, фикция. Так что оставь этот термин маркетологам для выбивания больших денег из заказчика, а так же для резюме, дабы гнуть пальцы "пишу, типа, в стиле веб-два-ноль".

Имхо, технические спецы меж собою не должны его использовать. Зачем пускать пыль перед собеседником, если это понимает, что это пыль?

25K
24 октября 2007 года
ЙэвгениЙ
22 / / 19.07.2007
Цитата: e1vin

А вообще, видимо, немного неточно сформулирована задача. Я подумал, что "связь двух компов через хостинг" - это связь двух компов посредством обычного поочередного коннекта к веб-серверу по протоколу HTTP, к которому они имеют доступ. Видимо, немного не так?


Да как угодно. Я повторяю.. есть хостинг с ПХП. Любыми доступными способами реализовать необходимо вышеописанную весч. Точнее максимально рациональными. ПХП же не только ХТТП протокол может юзать...

За идею с аяксом спасиб. Погляжу, почитаю. Никогда собственно не имел дело с ним, поэтому слабо представляю его возможности.
Как я понял, он позволяет слать запрос серверу и не разрывать коннект, а затем по запросу получать необходимые данные. Я правильно понял?

5
25 октября 2007 года
hardcase
4.5K / / 09.08.2005
Цитата: ЙэвгениЙ
Необходимо реализовать такую штуку... Есть 2 компа с инетом (без внешних АйПи) и хостинг с ПХП.

Если есть конечно, доступ к серверу, то элементарно поднять виртуальную сеть. Например OpenVPN.

12
25 октября 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: ЙэвгениЙ

Как я понял, он позволяет слать запрос серверу и не разрывать коннект, а затем по запросу получать необходимые данные. Я правильно понял?


Не совсем. Работает с HTTP он совершенно так же, как и без него. Т.е. логика клиент-сервер все таже. Но на клиенте с его помощью используя DOM API и объект XMLHttpRequest можно вставлять в страницу данные полученные с сервера и при этом сама страница не обновляется.

AJAX. Так что же это?

25K
25 октября 2007 года
ЙэвгениЙ
22 / / 19.07.2007
Цитата: hardcase
Если есть конечно, доступ к серверу, то элементарно поднять виртуальную сеть. Например OpenVPN.



Конечно доступа к серверу нету... :(

25K
25 октября 2007 года
ЙэвгениЙ
22 / / 19.07.2007
alekciy, спасибо за ссылку. Оч хорошая статья.
Короче, как я понял, АЯКС не катат вовсе. Т.к. не позволяет серверу самому слать запрос, когда это необходимо.
Для этого надо держать коннект с сервером. ПОэтому единственный способ, который я вижу - это организация соединения через сокеты.
То есть пишется скрипт, который слушает два порта. Обе машины соединяются по одному из портов и далее уже все посылаемые данные одним компом скрипт перенаправляет на второй. Поидее вполне должно работать. Кто что думает?
Повторю. Для этого будут так же написаны клиентские приложения, которые будут держать коннект на порт сервера и обрабатывать полученные данные.
12
25 октября 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: ЙэвгениЙ

Для этого надо держать коннект с сервером. ПОэтому единственный способ, который я вижу - это организация соединения через сокеты.
То есть пишется скрипт, который слушает два порта. Обе машины соединяются по одному из портов и далее уже все посылаемые данные одним компом скрипт перенаправляет на второй. Поидее вполне должно работать. Кто что думает?


Какого рода информацией они должны обмениваться? Если какой то инфой реализованной как веб страница, то аякс вполне покатит. Если работа с файловой системой или еще какие действия которые нельзя выполнить в песочнице, то однозначно писать приложение придется.

Насчет того, реализуемо ли, то я уже написал. Конечно реализуемо. Только имей в виду, что у тебя скрипт на сервере держащий сокет будет прибит интерпритатором по таймауту, значит клиентское приложение ложно это учитывать и корректно отрабатывать.

25K
25 октября 2007 года
ЙэвгениЙ
22 / / 19.07.2007
Цитата: alekciy
Какого рода информацией они должны обмениваться? Если какой то инфой реализованной как веб страница, то аякс вполне покатит. Если работа с файловой системой или еще какие действия ....


Именно работа с ФС и др действия, недоступные из песочницы.

Цитата: alekciy
Только имей в виду, что у тебя скрипт на сервере держащий сокет будет прибит интерпритатором по таймауту, значит клиентское приложение ложно это учитывать и корректно отрабатывать.


Это да. Я знаю. Думаю большой проблемы это не составит.

2.2K
25 октября 2007 года
e1vin
153 / / 04.06.2006
Цитата: ЙэвгениЙ
Да как угодно. Я повторяю.. есть хостинг с ПХП. Любыми доступными способами реализовать необходимо вышеописанную весч. Точнее максимально рациональными. ПХП же не только ХТТП протокол может юзать...



Блин, каким способом связь с хостингом осуществляется? :mad: Хостинг у тебя на компе? Или ты с ним связываешься по HTTP? Или компьютеры связаны с хостингом напрямую, но не друг с другом?

В последнем случае копай в сторону юних-блокировки файлов и каналов, с их помощью можно очень просто и эффективно осуществлять взаимодействие между разными процессами (в твоем случае - между интерпретаторами пхп, как я понял). Вот только хз, можно ли из пхп эти каналы создавать и ими управлять (есть ли там реализация этих системных вызовов?)

Не знаю, честно говоря, какие полномочия у пхп-интерпретатора должны для этого быть, дома буду - литературу копну, могу точно написать. Но решение, имхо, самое элегантное, если ситуацию я правильно понял.

25K
25 октября 2007 года
ЙэвгениЙ
22 / / 19.07.2007
Цитата: e1vin
Блин, каким способом связь с хостингом осуществляется? :mad: Хостинг у тебя на компе? Или ты с ним связываешься по HTTP? Или компьютеры связаны с хостингом напрямую, но не друг с другом?


Хостинг сторонний. То есть сервак в инете. Связываюсь с ним по НТТР. Но по НТТР не получится держать коннект. Поэтому думаю логичнее связываться с сервером через сокеты.. Больше способов именно осуществления связи с сервером я не знаю. Компы естественно друг с другом не связаны.

Цитата: e1vin
Не знаю, честно говоря, какие полномочия у пхп-интерпретатора должны для этого быть, дома буду - литературу копну, могу точно написать. Но решение, имхо, самое элегантное, если ситуацию я правильно понял.


Да. Посмотри плиз. Буду весьма признателен.

2.2K
25 октября 2007 года
e1vin
153 / / 04.06.2006
Цитата: ЙэвгениЙ
Хостинг сторонний. То есть сервак в инете. Связываюсь с ним по НТТР. Но по НТТР не получится держать коннект. Поэтому думаю логичнее связываться с сервером через сокеты.. Больше способов именно осуществления связи с сервером я не знаю. Компы естественно друг с другом не связаны.



Вот, классно, сразу все прояснилось :)

А ты вообще уверен, что тебе (читай "интерпретатору") дают создавать эти самые сокеты на их сервере?

25K
25 октября 2007 года
ЙэвгениЙ
22 / / 19.07.2007
Цитата: e1vin

А ты вообще уверен, что тебе (читай "интерпретатору") дают создавать эти самые сокеты на их сервере?


Вроде да. СОкет я создавал на определённый порт. Правда не получалось подключиться извне, т.к. у них залочены входящие коннекты. Но я с ними поговорил - обещали открыть. Сегодня вечером проверю точно.

2.2K
25 октября 2007 года
e1vin
153 / / 04.06.2006
В таком случае удачи! Можно и через сокеты. А где уже временно хранить эту инфу - в XML, БД или еще где - ИМХО, не важно :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог