@pentagon9714

Как реализовать чат (или почти чат) на СИ + php?

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

На данный момент всё, что удалось сделать - это реализовать работу сокетов на локальной машине.

Вопросы заключаются в следующем:
1. Возможно ли вообще реализовать подобное, используя лишь Си и PHP? Если нет, то что стоит использовать и какие источники стоит изучить?
2. Какими способами можно реализовать отправку данных от сервера к клиенту?
3. Как наиболее удачно реализовать отправку данных от клиента к серверу?

Буду благодарен, если приведете примеры реализации чего-либо похожего.
  • Вопрос задан
  • 797 просмотров
Решения вопроса 1
@MadridianFox
Web-программист, многостаночник
Реализовать можно, однако PHP не очень подходит для организации чатов и подобных вещей, где сервер должен держать соединение с множеством клиентов и инициировать отправку данных.
Лучше посмотреть в сторону NodeJS, go, Java, Python...

В основе всех высокоуровневых протоколов взаимодействия компьютеров по сети лежит socket соединение. Когда ты работаешь в браузере, ты не можешь его использовать, у тебя есть только http (ajax это тоже http), грязные хаки, вроде long polling, ну и модный нынче WebSocket.

Если клиент пишется на C, да и вообще на чём угодно что поддерживает сокеты, то тут даже гадать нечего. PHP имеет расширение для работы с сокетами. Раньше вроде считалось что оно не очень, и работают с ним одни извращенцы. Оно и понятно - PHP заточен под http.

На самом деле необходимо придумать или реализовать уже известный, или даже взять библиотеку, в которой уже запрограммирован протокол общения между клиентом и сервером.
По сути, так же как http с его заголовками и телом запроса является протоколом над TCP, то и вам необходимо придумать/ взять готовый протокол такого же уровня - над TCP.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы