РНР: связь двух компов через хостинг
Реально ли такое реализовать на ПХП?? Если да, то подскажите примерно в какую сторону копать?
Тупо обмениваться информацией через файлик и постоянно обновлять его не хочется... Возможно ли осуществить постоянное соединение с сервером, что бы тот по приходу данных от одного компа отсылал их на другой?...
Заранее спасибо!
Что конкретно касается вопроса, то такое сделать можно, но я бы не рекоммендовал -это не самый лучший способ передавать инфу между компами...
Кстати, они в автоматическом режиме должны обмениваться или с помощь юзверя?
Всмысле вообще без промежуточного сервера??
Как в автоматическом, так и с помощью юзера
Заранее спасибо!
Реализовать можно многое - но прослушивальщик на пхп - извращение. на том же с++ можно реализовать синхронизацию компов без промежутчного серва. пхп для этого не предназначен
А как, где почитать на эту тему??? Не представляю как это сделать, если компы нахдятся за НАТом, проксями и прочей ерундой. Резвее это реально? Буду плагодарен за инфу.
Можно, все можно. Ведь компы в Сеть выходят? Другое дело, если там файрволл, и то, его тоже можно победить...
Ну расскажите хоть примерно как это осуществляется???
Мои познания в сетях не особо широки... но на сколько я знаю, что бы соединитьсся с кем либо, необходимо иметь АйПи внешний. Или хотя бы маршруты прописать, если за НАТом.
В моём случае один комп находится за НАТом (возможности править маршруты нету), соответственно внешние подключения запрещены через него, а второй за НАТом да и ещё за проксёй.
Как быть?
Как быть?
Я тоже не сисадмин, но разве у компов нету айпи внешнего? ведь через какой-то шлюз они выходят в Сеть?
В том то и дело, что нету. Внешний АйПи у шлюза, а не у компа. И этот шлюз все входящие подключения блокирует... Хотя даже если и не блокировал, то всё равно я хрен бы достучался до своего компа, т.к. маршрутов не прописано на мой комп.
Поправьте, если в чём неправ...
Поправьте, если в чём неправ...
попробуй задай этот же вопрос на форуме сишников, тут навряд помогут
ууу... там подключене между ними будет прозрачно. делай коннект на шлюз..
А если держать постоянный коннект с сервером? И ждать запроса...
Ну это не проблема. Тут не требуется перекачивать файлы огромные. Думаю делать так: запрос на файл послал, вайл закачался на сервер с компа 1, файл скачался с сервера на комп 2.
Я и собираюсь писать клиенты...
Естественно.. я согласен, что это далеко не самый рациональный способ... Но зато тут максимальная независимость от типа соединения юзеров к инету и минимальные требования к серверу (пхп поддерживает любой самый дашёвый хостинг)
Как это так? Т.е. скажем за шлюзом находится 10 компов. Я шлю запрос на шлюз и попадаю именно на свой комп??? Не чудеса ли?...
PS Можно конечно и рубанком гвозди забивать.
Это технически возможно, но нужно настраивать шлюз, чтобы все обращения к шлюзу на такой-то порт шли на такой-то адрес внутри сети. Если доступ к конфигурации шлюза есть (в чем я сильно сомневаюсь), то это решается, а если нет, то подобное возможно только через посредника, к которому могут подключится обе стороны.
Хотя есть сомнения, что автор справиться, не лучше ли найти готовое решение? Задача совершенно не уникальна, готовые решения есть.
Хостинг с PHP. Как вариант.
Если Вы собираетесь использовать HTTP-протокол (как я понял), то невозможно.
Это дополнительные библиотеки? Я правильно понял?
Найти проще, но надо написать самому :)
А через сокеты???
Да. Интерфейсные. GUI-ой на чем то строить ведь будешь? Если в ладах с С/C++, то сразу с использованием Qt можно такие програмки наваять, если хочется на PHP, то есть соответсвующие расширения.
Обе либы платформено независимые.
Почему? Хотя смотря, что ты понимаешь под "постоянное".
А вообще это возможно. По HTTP можно организовать двухсторонний обмен данными в пределах одного соединения и при этом данные не обязательно должны идти одним куском. Могут быть и перерывы.
http://en.wikipedia.org/wiki/HTTP_Streaming
http://ajaxpatterns.org/HTTP_Streaming
А вообще, видимо, немного неточно сформулирована задача. Я подумал, что "связь двух компов через хостинг" - это связь двух компов посредством обычного поочередного коннекта к веб-серверу по протоколу HTTP, к которому они имеют доступ. Видимо, немного не так?
И вовсе это не ajax-фишки.
Ок, я выразился неправильно :) "веб-два-ноль"ные :)
Не прав. AJAX через что у нас работает? Все тот же HTTP. Ни чего принципиально нового там нет. Я знаю народ который писал достаточно сложные приложения с использованием AJAX еще этак лет 5-6 назад, когда об Аяксе ни кто ни чего не слыхивал. Им заказчик (а они еще и сопровождают это двигло) услышав об Аяксе заявил, типа мы тоже хотим это в двигле, на что они резонно ответили, что де давно уже все там это реализованно.
Считаю этот случай крайне показательным.
Фигня этот веб-два-ноль. Мыльный пузырь, фикция. Так что оставь этот термин маркетологам для выбивания больших денег из заказчика, а так же для резюме, дабы гнуть пальцы "пишу, типа, в стиле веб-два-ноль".
Имхо, технические спецы меж собою не должны его использовать. Зачем пускать пыль перед собеседником, если это понимает, что это пыль?
А вообще, видимо, немного неточно сформулирована задача. Я подумал, что "связь двух компов через хостинг" - это связь двух компов посредством обычного поочередного коннекта к веб-серверу по протоколу HTTP, к которому они имеют доступ. Видимо, немного не так?
Да как угодно. Я повторяю.. есть хостинг с ПХП. Любыми доступными способами реализовать необходимо вышеописанную весч. Точнее максимально рациональными. ПХП же не только ХТТП протокол может юзать...
За идею с аяксом спасиб. Погляжу, почитаю. Никогда собственно не имел дело с ним, поэтому слабо представляю его возможности.
Как я понял, он позволяет слать запрос серверу и не разрывать коннект, а затем по запросу получать необходимые данные. Я правильно понял?
Как я понял, он позволяет слать запрос серверу и не разрывать коннект, а затем по запросу получать необходимые данные. Я правильно понял?
Не совсем. Работает с HTTP он совершенно так же, как и без него. Т.е. логика клиент-сервер все таже. Но на клиенте с его помощью используя DOM API и объект XMLHttpRequest можно вставлять в страницу данные полученные с сервера и при этом сама страница не обновляется.
AJAX. Так что же это?
Короче, как я понял, АЯКС не катат вовсе. Т.к. не позволяет серверу самому слать запрос, когда это необходимо.
Для этого надо держать коннект с сервером. ПОэтому единственный способ, который я вижу - это организация соединения через сокеты.
То есть пишется скрипт, который слушает два порта. Обе машины соединяются по одному из портов и далее уже все посылаемые данные одним компом скрипт перенаправляет на второй. Поидее вполне должно работать. Кто что думает?
Повторю. Для этого будут так же написаны клиентские приложения, которые будут держать коннект на порт сервера и обрабатывать полученные данные.
Для этого надо держать коннект с сервером. ПОэтому единственный способ, который я вижу - это организация соединения через сокеты.
То есть пишется скрипт, который слушает два порта. Обе машины соединяются по одному из портов и далее уже все посылаемые данные одним компом скрипт перенаправляет на второй. Поидее вполне должно работать. Кто что думает?
Какого рода информацией они должны обмениваться? Если какой то инфой реализованной как веб страница, то аякс вполне покатит. Если работа с файловой системой или еще какие действия которые нельзя выполнить в песочнице, то однозначно писать приложение придется.
Насчет того, реализуемо ли, то я уже написал. Конечно реализуемо. Только имей в виду, что у тебя скрипт на сервере держащий сокет будет прибит интерпритатором по таймауту, значит клиентское приложение ложно это учитывать и корректно отрабатывать.
Именно работа с ФС и др действия, недоступные из песочницы.
Это да. Я знаю. Думаю большой проблемы это не составит.
Блин, каким способом связь с хостингом осуществляется? :mad: Хостинг у тебя на компе? Или ты с ним связываешься по HTTP? Или компьютеры связаны с хостингом напрямую, но не друг с другом?
В последнем случае копай в сторону юних-блокировки файлов и каналов, с их помощью можно очень просто и эффективно осуществлять взаимодействие между разными процессами (в твоем случае - между интерпретаторами пхп, как я понял). Вот только хз, можно ли из пхп эти каналы создавать и ими управлять (есть ли там реализация этих системных вызовов?)
Не знаю, честно говоря, какие полномочия у пхп-интерпретатора должны для этого быть, дома буду - литературу копну, могу точно написать. Но решение, имхо, самое элегантное, если ситуацию я правильно понял.
Хостинг сторонний. То есть сервак в инете. Связываюсь с ним по НТТР. Но по НТТР не получится держать коннект. Поэтому думаю логичнее связываться с сервером через сокеты.. Больше способов именно осуществления связи с сервером я не знаю. Компы естественно друг с другом не связаны.
Да. Посмотри плиз. Буду весьма признателен.
Вот, классно, сразу все прояснилось :)
А ты вообще уверен, что тебе (читай "интерпретатору") дают создавать эти самые сокеты на их сервере?
А ты вообще уверен, что тебе (читай "интерпретатору") дают создавать эти самые сокеты на их сервере?
Вроде да. СОкет я создавал на определённый порт. Правда не получалось подключиться извне, т.к. у них залочены входящие коннекты. Но я с ними поговорил - обещали открыть. Сегодня вечером проверю точно.