Вместо того, чтобы пытаться заставить ваш серверный PHP-скрипт отправлять данные в программу на C #, что доставит вам кучу головных болей, почему бы не написать что-то в PHP-скрипте, который при конкретном запросе к странице выводит текущие инструкции в очереди? Затем программа C # может просто отправить веб-запрос на страницу и получить инструкции.
Например:
== PHP SCRIPT ==
<?php
//main execution.
process_request();
function process_request()
{
$header = "200 OK";
if (!empty($_GET['q']) && validate_request())
{
switch ($_GET['q'])
{
case "get_instructions":
echo get_instructions();
break;
case "something_else":
//do something else depending on what data the C# program requested.
break;
default:
$header = "403 Forbidden"; //not a valid query.
break;
}
}
else { $header = "403 Forbidden"; } //invalid request.
header("HTTP/1.1 $header");
}
function validate_request()
{
//this is just a basic validation, open to you for how you want to validate the request, if at all.
return $_SERVER["HTTP_USER_AGENT"] == "MyAppName/1.1 (Instruction Request)";
}
function get_instructions()
{
//pseudo function, for example purposes only.
return "1:control1\n1:control2\n1:control3\n0:control4\n0:control5";
}
?>
Теперь для фактического получения данных из запроса:
== C # Код клиента ==
private string QueryServer(string command, Uri serverpage)
{
string qString = string.Empty;
HttpWebRequest qRequest = (HttpWebRequest)HttpWebRequest.Create(serverpage.AbsoluteUri + "?q=" + command);
qRequest.Method = "GET";
qRequest.UserAgent = "MyAppName/1.1 (Instruction Request)";
using (HttpWebResponse qResponse = (HttpWebResponse)qRequest.GetResponse())
if (qResponse.StatusCode == HttpStatusCode.OK)
using (System.IO.StreamReader qReader = new System.IO.StreamReader(qResponse.GetResponseStream()))
qString = qReader.ReadToEnd().Trim(); ;
return qString;
}
Это грубый шаблон с минимальной обработкой ошибок, надеюсь, этого достаточно, чтобы начать работу.
РЕДАКТИРОВАТЬ: Woops, забыл включить пример использования:
MessageBox.Show(QueryServer("get_instructions", new Uri("http://localhost/interop.php")));