C'de basit bir HTTP sunucusu oluşturmam gerekiyor. Herhangi bir rehberlik var mı? Bağlantılar? Örnekler?
C'de basit bir HTTP sunucusu oluşturmam gerekiyor. Herhangi bir rehberlik var mı? Bağlantılar? Örnekler?
Yanıtlar:
Küçük httpd'ye bir göz atmanızı öneririm . Sıfırdan yazmak istiyorsanız, RFC 2616'yı baştan sona okumak isteyeceksiniz . Ağa gerçekten düşük bir düzeyde erişmek için BSD soketlerini kullanın .
tiny httpd
ayrıca buradan github'da
Şunlara bir göz atmanızı tavsiye ederim: İstemci ve Sunucu Yazmak İçin Pratik Bir Kılavuz
Artımlı adımlarla uygulamanız gereken şey:
Bir HTTP sunucusu kavramsal olarak basittir:
Ne kadar HTTP'yi desteklemek istediğinize bağlı olarak daha da zorlaşır - POST biraz daha karmaşıktır, komut dosyaları, birden fazla isteği işleme vb.
Ancak temel çok basit.
"Sadece 200 satırlık C kaynak koduna sahip küçük, güvenli bir web sunucusu [...] olan nweb'e (Nigel'in Web Sunucusu) bakın:
https://drive.google.com/file/d/0B3msld7qnNOhN1NXaFIwSFU2Mjg/view?usp=sharing
http://www.ibm.com/developerworks/systems/library/es-nweb/
Makale sözde kod, açıklamalar ve yorumlar içerir.
DÜZENLEME: IBM'in bağlantısı kesildi. Web sayfasının bir PDF dosyasını Google Drive'a kaydettim. İşte kod indirme:
https://drive.google.com/file/d/0B3msld7qnNOhSGZGdDJJMmY0VHM/view?usp=sharing
@ ankushagarwal birkaç değişiklik yaptı ve sürümünü GitHub'a yükledi: https://github.com/ankushagarwal/nweb
Kullanabileceğin kendim yazdım. Bu çalışma sqlite'a sahiptir, iş parçacığı güvenlidir ve UNIX için C ++ içindedir.
Onu ayırabilmeli ve C uyumlu kodunu kullanabilmelisiniz.
Kaynağa lightthttpd gibi bir şeye bakmanızı öneririm .
http://www.manning.com/hethmon/ - Manning'in "Paul S. Hethmon tarafından yazılan Resimli HTTP Kılavuzu", HTTP protokolünü öğrenmek için çok iyi bir kitaptır ve onu uygulayan / genişleten biri için çok faydalı olacaktır.
Apache'nin arkasındaki kişilerin yaptığı gibi, HTTP protokolünü kapsüllemek için platforma özgü soket işlevlerini kullanın .
Daha fazla yanıtı olan bir kopya var .
Henüz belirtilmeyen bir aday spserver .