Java-клиент и сервер PHP с сокетами

Я уже много часов ищу, и мне просто нужно руководствоваться ситуацией. Я хочу создать простую клиент-серверную программу. Я изначально планировал сделать их как в java, но пару недель назад я купил общую учетную запись хостинга, и они отключили java для новых учетных записей. Итак, я думаю, что мой следующий лучший выбор и на каком-то языке, с которым я знаком, – это PHP. Я слежу за учебником по сокетам с сайта java и создаю клиент java. Я пытался преобразовать серверную часть примера в PHP. По-видимому, godaddy позволит вам использовать fsockopen () для сокетов на общем сервере. Я предполагаю, что мне нужно знать, возможно ли это, и как я могу запустить php-файл после его создания? В этом примере говорится, что мне нужно запустить серверную программу, прежде чем запускать клиент. Я не уверен, как это сделать.

Solutions Collecting From Web of "Java-клиент и сервер PHP с сокетами"

Я бы НЕ использовал сырые сокеты для этого. Вместо этого используйте JSON через HTTP, потому что PHP поддерживает обработку HTTP без особого рассмотрения. Просто запустить страницы PHP на размещенном экземпляре apache на GoDaddy или Amazon EC2. Конечно, вы можете использовать сокеты, но очень мало людей на самом деле это делают. Массовое число людей обрабатывает и отвечает на HTTP с помощью PHP. Это означает, что вы найдете гораздо больше людей, которые могут помочь ответить на ваши вопросы, если вы будете следовать за стадом здесь. Также для обеих сторон есть библиотеки API с обеих сторон. Использование сокетов имеет множество вещей, которые вам придется делать самому или страдать от всех странных ошибок, которые возникают при работе с сырыми сокетами в первый раз.

Также обработка JSON легко поддерживается как Java, так и PHP, поэтому очень легко отправить данные клиенту и серверу, используя это.

Ну, вы можете, конечно, использовать PHP на бэкэнд и Java на интерфейсе, если хотите, но я бы предложил отменить вашу учетную запись Go-Daddy и получить учетную запись Amazon EC2 / S3, потому что вы получаете полную машину, посвященную тому, что вы хотите положить в теме. Поэтому, если вы хотите сделать Java на бэкэнд, вы можете просто установить JDK, Tomcat и т. Д. Самостоятельно на экземпляр amazon, и вам хорошо идти. Вы также можете разместить PHP. Существует даже множество экземпляров AMI, предварительно установленных для пакетов Java или PHP.

Хотя я не могу быть уверен в этом на 100%, я собираюсь пойти и сказать, что это, вероятно, не сработает. Розетки могут быть на более дорогой стороне для хостинговой компании, поэтому, скорее всего, они будут одними из первых вещей, которые нужно будет сократить. Когда вам нужно что-то, действующее как сервер сокетов, вам обычно нужен длительный процесс, который имеет доступ к определенным портам на машине, на которой запущено соединение. Поскольку большинство хостинговых компаний создают среду chroot для каждого из своих клиентов, клиентам отказывают в доступе к безопасности, которым им нужно будет иметь возможность запускать настоящие серверы сокетов.

Мой опыт работы с GoDaddy в качестве хостинговой компании заключается в том, что они, похоже, работают по этой линии мысли. Из того, что я могу сказать, GoDaddy позволит PHP читать сокеты и действовать как клиент сокета. Это согласуется с их учетом fsockopen . Я искренне сомневаюсь, что это то, что вам нужно.

Если у вас нет фактической потребности в том, чтобы сервер передавал информацию клиенту (вместо того, чтобы иметь данные запроса клиента с сервера), то вам действительно намного лучше использовать стандартный HTTP-запрос и иметь либо XML, либо JSON переходить через провод (XML и JSON поддерживаются довольно мастерски в PHP). Если вы действительно должны иметь socketserver, то я бы пошел на webmasters.stackexchange.com и посмотрел, сможете ли вы найти рекомендации, подобные этому .

Если вы решите, что хотите создать сервер PHP Socket после этого, есть учебник от одного из людей в Zend. Они довольно резкие, поэтому, надеюсь, этого будет достаточно, чтобы помочь вам преобразовать скрипт (если это так, как вы решили)