gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:24:20 27 4
gpt4 key购买 nike

我想制作一个监听端口 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com