PHP web sunucusu aynı sunucu üzerinde C # programına bağlanmak -

3 Cevap

Yani kullanıcı uzaktan nedeniyle bazı koşullar orta-adam olarak C # kullanarak bir masaüstü programı koymak için beni zorla bir harici elektronik kurulu kontrol edebileceği bir web sunucusu var.

Ben arıyorum sihirli anahtar kelime nedir? Ben sadece döngü adresi koymak ve normal devam edebilirsiniz böylece teorik olarak aynı makine ... İlk başta ben soket düşündüm ama her soket arananlar TCP üzerinden sunucu-istemci içerir. Ama bu bir overkill yönlü veya tek yoldur?

Şimdiden teşekkürler.

edit: Benim C # program temelde PHP script emir bekler bir servistir. Yani uzaktan bu web sitesine erişmek ve C # app talimat verebilirsiniz.

3 Cevap

Ben C # program konuşmak amacıyla TCP / IP (ya da UDP) (veya başka MS mesajlaşma protokolünü) kullanarak istemci / sunucu mimarisi öneririm. Ne etkili yapıyorsun donanım özel bir parça için bir aygıt sürücüsü yazıyor. Eğer can istemci / sunucu yaparak:

  • Web sunucusu, sadece yerel makineye bağlayabilirsiniz herhangi bir makine üzerinde çalışan bir Windows hizmeti içine kodu Shift.
  • Web sunucusu dışındaki müşterilerine donanım erişebilir ve erişim çekişme rasyonel bir şekilde ele böylece kolayca sunucu kolu birden fazla bağlantı var. Hata ayıklama / donanım test etmek için bir test konsolu düşünüyorum.
  • Istemci / sunucu sistemleri ve pencere hizmetleri yazma konusunda özgeçmişinizi serin bir satır ekleyin!
  • Ben :-) şimdi düşünemiyorum muhtemelen diğer bazı faydaları

Edit

  • Özenle yazılmış olursa, sen de soyut aynı anda birden fazla cihaz işlemek için servis

Ne demek istediğini% 100 emin değilim. Ben bir php komut dosyası içinde bir C # uygulaması aramak istediğinizi varsayalım. Eğer öyleyse, belki bu yardımcı olacaktır:

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);
}

$ Komut c # uygulaması (artı herhangi bir komut satırı params) yolunu ve dosya adı ve nerede gerekli $ stdin ise, iyi, c # uygulaması için standart girdi.

C # app belirli bir bağlantı noktası üzerinde dinleme ise istekleri için (8888 diyelim), belki aradığınız:

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

XML-RPC ve SOAP uygulama-uygulama iletişim için tasarlanmıştır.