2012-09-24 23 views
0

我正在尋找最簡單的(跨平臺,但不一定是跨瀏覽器)代碼到發送數據從本地網頁到C(不是 C++)本地運行的應用程序。基本上,我有一個帶有表單的HTML頁面,我想以最簡單的方式將數據從該表單發送到另一個進程。 (我知道我可以比較容易地從網頁上讀取本地數據,特別是現在使用HTML5,但是在javascript沙箱之外編寫是一個謎。)從本地網頁發送數據到本地運行的C程序

我知道瀏覽器使安全問題變得非常困難,我不想打開我的機器進行攻擊,但也許我可以在C應用程序中運行一個非常簡單的服務器來接收提交的數據......無論哪種方式,我都無法運行任何標準的Web服務器,所以我需要一個C庫/應用程序,它爲我做。

我已經看過.hta文件(似乎只適用於Windows)和一些C web服務器(我發現所有都是* nix特定的)。一個類似的問題是如何transfer of data from webpage to a server c program,除了用戶允許使用Java和其他網絡服務器平臺(我必須使用C)。

UPDATE:有希望的庫:https://stackoverflow.com/questions/175507/c-c-web-server-library

+0

嗨,我需要更多信息。你的網頁是用什麼書寫的? PHP?或更簡單的東西? –

+0

簡單,只是HTML和JavaScript。如果它使用PHP(或任何其他Web語言),我需要一個(更多)複雜的Web服務器。 – Pat

回答

0

你可以寫在C 非常簡單的Web服務器,提供網頁從它(避免安全問題),並張榜公佈的形式給它。

+0

也許你可以用C編寫一個非常簡單的Web服務器,但是我提出這個問題的動機也是一些指導。 – Pat

+0

我認爲你高估了會花費什麼。根據你的需要,你可以跳過很多東西。如果你可以進行套接字編程,可以考慮以下方面:1)監聽127.0.0.1:80上的連接(因此沒有外部可以連接)2)接受連接並讀取數據3a)如果以GET開始,發送200 OK和HTML頁面並關閉套接字。 3b)如果它以POST開頭,跳到第一個空白行,然後讀取表單數據,然後發送200 OK和HTML頁面並關閉套接字。你將會有一些HTTP頭文件可以發回,但是真的有很多例子。 – mark

0

如果你一定要c,你必須去低層次,並處理插座庫的所有漂亮細節。 (爲什麼人們用高級語言來抽象)是有原因的。在服務器和客戶端here中查看C中RPC的一些示例代碼。如果你可以負擔得起與C結合,例如使用Tcl,我會在tcl腳本中實現服務器,並將您的C函數綁定爲Tcl命令。通過這種方式,您可以直接將內容傳遞給您的c方法,同時避免將所有套接字編碼寫入低級別。

+0

據我所知,在C(http://stackoverflow.com/a/169147/116891)中很難做跨平臺套接字編程。如果有庫已經這樣做,我寧願使用它們:-) – Pat

+0

其中大多數是C++,就像ACE,但如果你只關心Unix,Windows和OSX,你可以嘗試在Windows上移植你的東西使用cygwin。 – count0

+0

我正在尋找目前https://github.com/valenok/mongoose(跨平臺,C)... – Pat

1

你認爲FastCGI?我有一個用C編寫的快速CGI庫,可能會有所幫助。它仍然需要很多工作,我不確定我是否想在生產環境中使用。

如果您發現任何錯誤或進行任何增強,請分享它們以便幫助他人。

https://github.com/manvscode/shrewd-cgi

+0

如果我錯了,請原諒我,但不(快)CGI需要一個網站服務器?因爲我沒有其中之一。但我正在研究將Mongoose(一種小型的,跨平臺的C web服務器)嵌入到我的C應用程序中作爲一種可能的解決方案(如果我能夠實現它,我會在這裏發佈)。 – Pat

0

從網絡發送所需的數據到系統中(例如端口X)的特定端口。然後,使用下面的命令運行在後臺的應用程序(例如APP):

nc -l X | ./APP 

當然,你需要nc包。

+0

它似乎也是* nix是先決條件,所以這是行不通的。因此,問題上的'跨平臺'和'窗口'標籤。 – Pat

相關問題