LINUX.ORG.RU

чистый Си

 


2

3

Всем добра. Учусь программированию под линукс, знаю что нет ничего лучше чем практика. Пересел из микроконтроллеров, поэтому практически все нужно осваивать заново. Много гуглил но так и не смог найти примеры работы как загрузить веб контент, json или код html, и cookie на чистом си под линукс. а также как отправлять cookie. Киньте пример или ссылку на него, только рабочий пример пожалуйста, так как для меня это новые ворота.

как загрузить веб контент, json или код html, и cookie на чистом си

На моей памяти был такой же персонаж на ЛОРе, сначала ему даже пытались помогать, а потом он со всем посрался и несколько раз удалял аккаунт. Может не надо это делать на читсом Си?

Если по сути, веб - это же текст (не текст) через сокеты.

vvn_black ★★★★★
()

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

anonymous
()
Ответ на: комментарий от anonymous

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

casusnur
() автор топика
Ответ на: комментарий от t184256

нелюблю высокоуровневые ЯП за то, что какое нибудь хеловордное приложение весит метров 5, и работает так, будто параллельно майнит. например программа подсчета хеша на lazarus. с курлом на пхп натрахался, в итоге переписал без курла. мне нужна простая либа реализующая http, https поверх сокетов

casusnur
() автор топика
Ответ на: комментарий от t184256

В каком языке ты найдёшь либу лучше libcurl? Или ты предлагаешь libcef тащить? Ну в принципе возможно конечно, но задачи немного разные. Или ты про то что технически она не самая удобная (наследие си)?

anonymous
()

Для начала перестань употреблять фразу «чистый С». Где-то существует «грязный С»?

Harald ★★★★★
()
Ответ на: комментарий от casusnur

Плата за универсальность, надёжность, и простоту. А, ну и производительность (если учитывать возможности так она вообще космическая).

anonymous
()
Ответ на: комментарий от vromanov

нужно долго объяснять либе где взять инфу, по какому протоколу, какой таймаут, что делать если произошла ошибка итд. пример щас не могу найти, но по памяти там строк 20. например мне удобно юзать функции как в пхп getheaders конкретно забрать хедеры getfilecontents забрать тело, можно отправив куки позже из $http_response_header можно забрать куки тоесть одна строка одно действие. смысл от курла есть только если разобрать его код и достать функции которые нужны. но это опять же неудобно, так как придется ковырять чужой код.

casusnur
() автор топика
Ответ на: комментарий от Makhno

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

casusnur
() автор топика
Ответ на: комментарий от Harald

Где-то существует «грязный С»?

Да. Glib.

Meyer ★★★★★
()
Ответ на: комментарий от anonymous

Или ты про то что технически она не самая удобная (наследие си)?

Именно. Посмотри API питоновской requests, там за полстроки кода он тебе еще и JSON распарсит. Такого юзабилити в Си и на спор не достичь.

t184256 ★★★★★
()
Ответ на: комментарий от casusnur

нелюблю высокоуровневые ЯП за то, что какое нибудь хеловордное приложение весит метров 5, и работает так, будто параллельно майнит. например программа подсчета хеша на lazarus. с курлом на пхп натрахался, в итоге переписал без курла. мне нужна простая либа реализующая http, https поверх сокетов

Рим пал, центурион. Ты лет на 20 ошибся во времени когда такой вброс был актуальным. Все (99%?) что связано с вебом переходит на все более и более высокие абстракции / высокоуровненые ЯП.

abs ★★★
()
Ответ на: комментарий от abs

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

casusnur
() автор топика
Ответ на: комментарий от t184256

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

anonymous
()
Ответ на: комментарий от anonymous

я про высокоуровневые языки писал. напишите тож самое приложение на lazarus и оно будет весить 5 метров.

casusnur
() автор топика
Ответ на: комментарий от kardapoltsev

Как видишь, у линуксоидов подгорает. На винде любая приложуха тащит либ в 10-20 раз больших, и никто не пищит.

menangen ★★★★★
()

casusnur , ты всё правильно делаешь! Вебмакак сейчас полным полно, куда ни плюнь попадёшь в вебмакаку, и ещё одна не нужна. Есть достаточно мест где по-прежнему только чистый Си выручает, и если ты умеешь круто программировать на чистом Си для тебя всегда найдётся хорошая и интересная работа.

Да, создание программ на чистом Си может занять больше времени, зато потом они будут работать молниеносно быстро, да и не требовать каких-то особых зависимостей типа «python версии 3» - то есть получаем ещё и максимальную кроссплатформенность в придачу.

Думаю, если значительную часть софта грамотно переписать на старый добрый чистый Си, то всё будет просто летать и наш мир станет немного лучше.

SakuraKun ★★★★★
()
Ответ на: комментарий от casusnur

А в чём смысл твоих заморочек? Я большой сторонник оптимизации там, где она нужна и не слишком дорого обходится, но ты со своими микроконтроллерами совсем кукухой поехал. Под линуксами даже на каком-нибудь Raspbery Pi у тебя будет минимум 256 метров оперативы и такие заморочки просто ни к чему.

Плюсую оратора выше, который тебе посоветовал Go. На фоне C бойлерплейтинга радикально меньше, язык гораздо гибче, а производительность в большинстве задач отстаёт от C не значительно.

WitcherGeralt ★★
()

Хороший, годный вброс.

Twissel ★★★★★
()
Ответ на: комментарий от casusnur

оно будет весить целых 5 метров.

веб контент, json или код html, и cookie

Так тебе байты считать или веб? Ты уже определись.

Unicode4all ★★★★★
()
Ответ на: комментарий от Unicode4all

Поэтому то веб и становится раздутой жирнотой, ведь байты перестали считать и на оптимизацию стало всем пофиг, ведь главное побыстрее сделать и чтобы красиво было. А те у кого тормозит пускай новые компы покупают

SakuraKun ★★★★★
()

Дата регистрации: 16.02.2019 16:25:58

Последнее посещение: 16.02.2019 17:30:09

Статус: анонимный

веб контент, json или код html, и cookie на чистом си под линукс.

ЯЗАБАН.

shkolnick-kun ★★★★★
()
Последнее исправление: shkolnick-kun (всего исправлений: 2)
Ответ на: комментарий от anonymous

Вот чего чуть что, сразу «забан». Хороший же вопрос. Я такой же хотел задать, только чтобы писать на ассемблере.

Einstok_Fair ★★☆
()
Последнее исправление: Einstok_Fair (всего исправлений: 1)

а также как отправлять cookie.

открываешь спецификацию протокола HTTP/1.1 там написано

Harald ★★★★★
()

Много гуглил но так и не смог найти примеры работы как загрузить веб контент, json или код html, и cookie на чистом си под линукс. а также как отправлять cookie.

А зачем для этого вообще могут быть нужны примеры? Там же просто текст и ничего более. Куки - просто строчка в HTTP header. Нормальному человеку достаточно почитать соответствующий RFC. Примеров того, как открыть соединение и обменяться данными с сервером - полно. А уж что ты будешь по открытому соединению гонять - это исключительно твои заботы.

Stanson ★★★★★
()

C - он про закат Солнца вручную. И применяют его там, где по каким-либо причинам более высокоуровневый подход неприемлем. В тех же МК.

В остальных случаях должен выполняться принцип «инструмент соответствует решаемой задаче». Бесполезно закручивать винты молотком - он не для этого спроектирован.

В твоем случае тебе больше подойдут Java/Scala. Может быть Python (Django) или Ruby (Ruby on Rails).

LongLiveUbuntu ★★★★★
()

собсно,

snprintf(buf, bufsize, "GET / HTTP/1.1\r\nhost : mypurechost.com\r\nSet-Cookie: %s\r\n\r\n", cookie_str);

send(socket, buf, strlen(buf), 0);

ну ты понел

Harald ★★★★★
()
Ответ на: комментарий от Harald

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

casusnur
() автор топика
Ответ на: комментарий от casusnur

чтоб отсылать и принимать что-то по сети, есть функции сокетов,

man 7 socket
man 2 send
man 2 recv
man 2 bind
man 2 listen
man 2 accept
man 2 connect

а по части «что отсылать»

https://tools.ietf.org/html/rfc2616

Harald ★★★★★
()
Последнее исправление: Harald (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.