Сервер на C. Как мне сделать это с помощью строк запроса? - PullRequest
1 голос
/ 19 июля 2011

Итак, я предполагаю, что мне нужно будет использовать сокеты (я новичок в C).

Программа будет для Windows (в чистом C). И я буду использовать эти примеры

http://cs.baylor.edu/~donahoo/practical/CSockets/winsock.html

У меня вопрос: вместо клиентской программы, подключающейся через TCP, я хочу, чтобы сервер принимал подключения через веб-браузер, т.е. через HTTP.

Итак, если запущена серверная программа, вы набираете http://yourip:port/?gettemps и сервер отвечает, но как мне это сделать?

Как вы уже догадались, эта программа предназначена для удаленного мониторинга температуры через веб-браузер. Но не для процессора, для графического процессора, использующего библиотеку AMD ADL (так что, да, только карты AMD).

Ответы [ 4 ]

4 голосов
/ 19 июля 2011

Самым простым вариантом, поддерживаемым большинством веб-серверов, является CGI - Common Gateway Interface.

Конечно, у Microsoft есть свой собственный способ запуска вебприложения - ISAPI.

2 голосов
/ 19 июля 2011

Веб-браузеры отправляют запрос http на сервер через tcp. Если вы пишете веб-сервер с нуля, чем, вам нужно будет проанализировать данные из веб-браузера. http get request - это строка, например, GET /images/logo.png HTTP/1.1. Так что токенизируйте эту строку, когда она проходит через tcp, и получите команду.

Когда вы получили команды на сервер, вызовите соответствующие функции для обработки вашего запроса. Вот отличный пример простого http сервера . Возможно, вы захотите сделать сервер многопоточным, поскольку у вас может быть несколько пользователей одновременно.

2 голосов
/ 19 июля 2011

HTTP - довольно большой стандарт, вы можете использовать некоторую библиотеку, такую ​​как libcurl, чтобы обработать детали для вас.

Если вы решите закодировать его самостоятельно, HTTP будет работать через TCP, поэтому сначала нужно открыть сокет TCP на стандартном порту HTTP 80. Затем просто прослушайте сокет и проанализируйте входящие данные HTTP - отличныйрезюме дается здесь: http://www.jmarshall.com/easy/http/.

0 голосов
/ 19 июля 2011

Если вы уже настроили свой веб-сервер для запуска приложения на соответствующем порту, вы можете использовать getenv («QUERY_STRING») для доступа к веб-эквиваленту параметров командной строки.

Было бы лучше вызвать вашу программу напрямую, а не просто использовать сервер для доступа к одной программе по умолчанию, как в вашем примере, поэтому вы можете использовать http://yourip:port/yourprogram?cmd=gettemps. В этом примере getenv ("QUERY_STRING") вернет 'Cmd = gettemps'.

...