2012-01-20 81 views
0

概述如何通過本地網絡正確執行C#文件?

C#文件 - 用戶PC
PHP服務器 - 主機網頁應用

服務器和用戶計算機本地網絡

上我有一個C#文件從USB規模讀取重量。我將如何觸發此文件運行,以便將其輸入到我的程序中。問題是我使用PHP來託管我們的網頁/應用程序,所以它沒有運行客戶端,規模也沒有連接到服務器,而是連接到客戶端PC。

C#腳本必須在客戶端才能讀取比例尺,所以我會如何觸發這種情況發生?

這是甚至可能的,如果不是什麼會更好的方式?


重要編輯
我能夠運行規模腳本(C#)當我想通過具有PHP和C#使用TCP套接字。

C#會監聽PHP發送的內容,當它執行時會讀取比例並將此信息發回給PHP,因爲PHP正在偵聽響應。混入一點Ajax,並在網頁瀏覽器中更新。

給了克里斯信用是因爲他正在回答我的問題

+2

以「C#文件」你的意思是一個'* .cs'文件或可執行? – klennepette

+0

「C#文件」是什麼意思?程序集(dll)或可執行文件(exe)?你只是在txt文件中輸入C#代碼? – GuyFawkes

+0

由於PHP運行在機器的背景下,你要麼將需要允許其他機器上的權限PHP訪問遠程資源,或找到一種方法讓PHP能與網絡權力運行,因此它可以訪問其他機器的資源。 –

回答

3

這聽起來像你真正想要的是爲客戶端應用程序提交數據到網站本身,最合適的方法可能是從您的服務器公開Web服務。

這種服務應該接受重量數據,用某種形式的用戶密碼或任何沿,以記錄在服務器端正確關聯。我從來沒有親自在PHP中創建Web服務,所以我不能給出任何有關實現的建議,但是一旦暴露了它的元數據,將C#客戶端應用程序掛接到Web服務是相當簡單的假設你使用SOAP)。

+0

我想你的話是我真正想要的。我需要客戶端應用程序讀取重量,然後將其提交給我的服務器。 – Bobby

+0

@Bobby:到目前爲止,您的客戶端應用程序到目前爲止有多遠?它是否讀取您需要的數據?如果是這樣,你應該對從PHP公開Web服務做一些研究 - 你可以採取多種方法,但是要根據安全需求,可伸縮性等做出決定。一旦你獲得某種服務並運行起來,它應該簡單到足以更新C#客戶端應用程序以上傳權重結果。我認爲你的服務會把提交保存到你的MySQL表中。 –

+0

我所擁有的僅僅是ConnectShip給我的一個簡單的源代碼,它顯示了控制檯的重量以及它。因爲我不知道該去哪裏,所以沒有別的。從看起來我唯一的選擇是以某種方式每隔幾秒就運行一次,並更新一個mySQL表,以便PHP可以獲得它的價值。 – Bobby

2

C#最有幫助的是不是一種腳本語言,它是編譯成可執行的二進制文件或庫的語言。您將無法通過網站在客戶端的計算機上執行C#代碼,因爲C#代碼在運行之前需要進行編譯。

大概你真正想要的是你編譯的C#二進制文件通過你的網站在客戶機上執行。你將無法輕鬆做到這一點。有很多安全措施可以阻止瀏覽器在您的計算機上運行程序。有可能通過使用插件(如ActiveX)來繞過這些安全措施,但這不是一個單線程。

編輯︰我認爲你需要退後一步,思考你想做的廣泛的事情。您正試圖創建一個可以從用戶的USB端口讀取信息的網站。這是瀏覽器被設計爲阻止的類型,並且有很好的理由。如果沒有我的明確許可,我不希望隨機網站能夠訪問外設硬件。如果你希望這個網站按照你期望的方式運行,你將不得不認真考慮安全影響。您需要某種客戶端代碼(ActiveX,Silverlight,...),並且用戶需要明確授予這一切發生的權限。這並不容易,也不會是自動的。我很高興這是真的。

+0

是的,我知道我在問什麼似乎很荒謬。但是我所希望的是以某種方式將這個源代碼保存在每個客戶端PC上,並在我需要它給我數據時執行它。數據甚至不必進入PHP,但可能到一個mySQL表,我可以讓PHP從那裏拉它。 – Bobby

2

您無法從網頁啓動C#應用程序,這種方式每次都會在每個瀏覽器中運行。但是,您可以採取以下解決方法:

  • 使用ActiveX組件讀取客戶端中的數據並將其上載到服務器。最大的缺點是它只能在Internet Explorer中工作
  • 使用在提升模式(v4)上運行的Silverlight客戶端應用程序並將數據上傳到服務器。
  • 是指你的客戶端下載應用程序(你寫了關於C#應用程序),然後運行它 - 這個應用程序將數據上傳到服務器。

希望這有助於。

+0

我認爲你應該堅持這裏的第三個建議。只需添加任何種類的數據提交功能到您的工具。 – GuyFawkes

+0

這是怎麼回事。反正有用戶啓動腳本並讓它每隔幾秒鐘持續運行一次,以便抓住重量並更新一個mySQL表?那麼我的網絡程序可以從那裏獲取這些數據? – Bobby