加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#-PHP套接字连接

发布时间:2020-12-15 17:24:45 所属栏目:百科 来源:网络整理
导读:我正在通过服务器上的php脚本控制的PC上编写程序.我目前正在使用php来来回ftp文件并使用c#读取文件并根据文件中的数据执行命令.然而,这不是一个理想的解决方案. 我想看一个关于如何使用php将数据发送到c#程序pver套接字的教程或示例. 我想发送的数据示例 1:c
我正在通过服务器上的php脚本控制的PC上编写程序.我目前正在使用php来来回ftp文件并使用c#读取文件并根据文件中的数据执行命令.然而,这不是一个理想的解决方案.

我想看一个关于如何使用php将数据发送到c#程序pver套接字的教程或示例.

我想发送的数据示例

1:control1
1:control2
1:control3
0:control4
0:control5

谁能指出我正确的方向?

解决方法

而不是尝试让你的服务器端PHP脚本将数据发送到C#程序,这将给你带来一堆令人头疼的问题,为什么不在PHP脚本上写一些东西,给定页面的特定请求,输出当前排队的说明?然后,C#程序可以只对页面进行WebRequest并接收其指令.

例如:

== 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:control1n1:control2n1:control3n0:control4n0: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")));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读