簡體   English   中英

PHP Web服務器連接到同一服務器上的C#程序-我在尋找什么?

[英]PHP webserver connect to C# program on same server — What am I looking for?

因此,我有一個Web服務器,用戶可以在其中遠程控制外部電子板,由於某些條件,該電路板迫使我使用C#作為中間人來放置桌面程序。

我要尋找的魔術關鍵字是什么? 起初,我想到了套接字,但是每個套接字搜索都涉及TCP上的服務器-客戶端...這是同一台機器,因此從理論上講,我可以放回送地址並正常進行。 但這是一種矯kill過正的方法還是唯一的方法?

提前致謝。

編輯:我的C#程序基本上是一個守護程序,它將等待來自PHP腳本的命令。 因此,我可以遠程訪問該網站並指示該C#應用程序。

我建議使用TCP / IP(甚至UDP)(或其他MS消息傳遞協議)的客戶端/服務器體系結構,以便與您的C#程序對話。 您實際上正在做的是為專用硬件編寫設備驅動程序。 通過使其成為客戶端/服務器,您可以:

  • 將代碼轉移到Windows服務中,該服務可以在您的Web服務器可以連接到的任何計算機上運行,​​而不僅僅是本地計算機。
  • 輕松地讓服務器處理多個連接,以便Web服務器以外的其他客戶端都可以訪問硬件,並且以合理的方式處理訪問爭用。 考慮用於調試/測試硬件的測試控制台。
  • 在您的簡歷中添加一條關於編寫客戶端/服務器系統和Windows服務的妙語!
  • 可能還有一些其他我現在想不到的好處:-)

編輯

  • 如果編寫得當,您還可以抽象化服務以同時處理多個設備

我不確定100%的意思。 我假設您想從php腳本中調用C#應用程序。 如果是這樣,也許這會有所幫助:

function execute($command, $stdin) {
    $pipes = array();
    $process = proc_open($command, array(array('pipe', 'r'), array('pipe', 'w'), array('pipe', 'w')), $pipes);
    if ($stdin) fwrite($pipes[0], $stdin);
    fclose($pipes[0]);
    $stdout = '';
    while(!feof($pipes[1])) $stdout .= fgets($pipes[1], 1024);
    fclose($pipes[1]);
    $stderr = '';
    while(!feof($pipes[2])) $stderr .= fgets($pipes[2], 1024);
    fclose($pipes[2]);
    $return_value = proc_close($process);
    return array($stdout, $stderr, $return_value);
}

其中$ command是c#應用程序的路徑和文件名(加上任何命令行參數),如果需要,$ stdin是c#應用程序的標准輸入。

如果您的C#應用​​正在特定端口(例如8888)上偵聽請求,那么您可能正在尋找:

$handle = fopen("http://localhost:8888/someurl?someparam=somevalue", "r");

XML-RPCSOAP設計用於應用程序之間的通信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM