c# - 如何向 tcp 服务器发出 http 请求?

标签 c# .net http webserver

我想制作一个监听端口 443 的 TCP 服务器,以便它可以接收 HTTP 请求并回发。

现在我正在使用 Apache 和 PHP 以正常方式执行此操作,但是否可以在没有网络服务器的情况下执行此操作?

例如,我在 C# .NET 中构建了一个传统的 TCP/IP 客户端/服务器应用程序。是否可以使用此实现来处理 HTTP 请求而不是使用 Web 服务器?

最佳答案

在最低级别,您可以使用 HTTP 监听器类来执行此操作。

http://geekswithblogs.net/Nitin/archive/2008/06/22/using-the-http-listener-class.aspx

我曾经写过一个类似uni项目的东西,所以如果你有任何具体问题,我可以寻找代码。

如果您想更上一层楼,您可以研究网络服务。

这是我的部分代码...看看您可以用它做什么。 :

IPAddress address = IPAddress.Parse("127.0.0.1");
        IPEndPoint port = new IPEndPoint(address, 9999); //port 9999

        TcpListener listener = new TcpListener(port);

        listener.Start();

        Console.WriteLine("--Server loaded--");

        while (true) //loop forever
        {

            Console.WriteLine("Waiting for New Client");
            Socket sock = listener.AcceptSocket();
            byte[] buffer = new byte[32];

            string incomingMessage="";

            //read:
            while (sock.Available > 0)
            {
                int gotBytes = sock.Receive(buffer);
                incomingMessage += Encoding.ASCII.GetString(buffer, 0, gotBytes);

            }

            //debugging:
            //Console.WriteLine(incomingMessage);

            //Now check whether its a GET or a POST

            if (incomingMessage.ToUpper().Contains("POST") && incomingMessage.ToUpper().Contains("/DOSEARCH")) //a search has been asked for
            {

                Console.WriteLine("Query Has Been Received");

                //extracting the post data

                string htmlPostData = incomingMessage.Substring(incomingMessage.IndexOf("songName"));

                string[] parameters = htmlPostData.Split('&');

                string[] inputs = new string[5];

                for (int i=0; i<parameters.Length; i++)
                {
                    inputs[i] = (parameters[i].Split('='))[1];
                    inputs[i] = inputs[i].Replace('+',' ');
                }

...

byte[] outbuffer = Encoding.ASCII.GetBytes(answerPage.ToString());
                sock.Send(outbuffer);

                Console.WriteLine("Results Sent");

                sock.Close();

关于c# - 如何向 tcp 服务器发出 http 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9742663/

相关文章:

http - 如何通过 foreach mule 循环优雅地保留 HTTP header ?

c# - WPF 和外部 CSS 文件

c# - Entity Framework 代码优先迁移后的外来列

c# - 将多维数组元素转换为不同类型

c# - 如何制作仅包含一组自身类型或子类型的泛型类作为子类?

.net - 处理 COM 中的 .net 错误

c# - ClosedXML - 设置单元格的数据类型不起作用

c# - 多个委托(delegate),附加和一个失败

http - 阅读 http 帖子标题

java - 尽管采用 json 编码,但所需参数不存在