2014-05-17 42 views
0

我完全不熟悉Linux編程C++,我想進行以下操作;如何在原生C++ linux中響應http獲取

控制檯應用程序,用於處理和迴應不兼容的HTTP GET請求的參數。

但是我的第一步是;

所以如果打開瀏覽器並做一個;

http://192.168.2.10/?yadda=1 

論192.168.2.10我的linux系統,我會得到屏幕

New incomming web request parameters: yadda=1 

我這個與一個HTTP偵聽.NET做了幾次上回聲,但我m完全不知道如何在Linux中使用C++來做到這一點。

感謝您的幫助!

(不netcat的,在linux下沒有VMware上運行.NET與httplistener,無回聲-ING管道,腳本的解決方案,仿真或什麼的,我想知道如何做到這一點的C++在linux下)

在也就是說;

Dim listener As New HttpListener() 
listener.Prefixes.Add("http://localhost/") 
Dim context As HttpListenerContext = listener.GetContext 

在使用C++創建binairy可執行文件的linux中。一些C++代碼的實際行將是有幫助的。謝謝

+0

如果你想要一個.NET級別的API,那麼你應該看看Qt或POCO。 – PeterT

+0

使用* libcurl * - http:// en。wikipedia.org/wiki/CURL – SChepurin

回答

3

1)你可以用Linux上的netcat(nc)很快地連接一些東西,而無需編寫任何網絡代碼。

nc可以在服務器模式下運行,並且可以輸入/輸出到另一個程序,如C++控制檯程序。

2)您還可以使用inetd/xinetd將控制檯程序轉換爲網絡守護程序。你可以爲程序配置一個特定的端口(在inetd配置文件中),它可以監聽連接,然後用套接字描述符作爲STDIN/STDOUT來執行你的C++程序,這樣你就可以使用標準的輸入/輸出調用。這也可以讓你編寫一個網絡程序,而不需要知道套接字。這裏是一個例子:Linux: How to make a daemon/service usable with xinetd?

我會從選項2開始,它的工作原理,並可以在幾分鐘內得到一個原型,讓你專注於你的控制檯回聲功能,那麼如果你真的需要以後,你可以重溫事情並編寫完整的網絡守護進程。

3)我只記得libcurl(http://curl.haxx.se/libcurl/c/),它工作的很好。感謝SChepurin在評論中提及它。我在Linux上使用過它。它是C,但是你可以比使用C++包裝Berkeley API更簡單。除此之外,您將在Linux上使用Berkeley(BSD)/ POSIX套接字(​​)調用,或者可能會有一個不錯的C++庫。如果你喜歡,我可以離線發送給你。我所知道的最好的書是已故的W. Richard Stevens着名書籍,UNIX網絡編程以及相關係列。

我只是以爲我會拋出前兩個想法,因爲你說你不知道從哪裏開始使用C++,它可能會讓你開始更快。

+0

NetCat不工作,相信我,我試圖讓這個工作一年多了。 – Lectere

+0

我已經使用netcat來快速和骯髒的服務器管道數據,但不記得是否有任何方式來發出命令和響應模式,所以這就是爲什麼我建議你嘗試#2,或至少結合netcat與一個C++控制檯程序。 #2已經確立。 – codenheim