C# TcpListener解析器
我有一个简单的TcpListener,我想解析它接收到的数据。以下是我所拥有的,它是有效的:C# TcpListener解析器,c#,tcplistener,C#,Tcplistener,我有一个简单的TcpListener,我想解析它接收到的数据。以下是我所拥有的,它是有效的: TcpListener listener = new TcpListener(localAddr, port); var client = listener.AcceptTcpClient(); var buffer = new byte[10240]; var stream = client.GetStream(); var length = stream.Read(buffer, 0, buffer
TcpListener listener = new TcpListener(localAddr, port);
var client = listener.AcceptTcpClient();
var buffer = new byte[10240];
var stream = client.GetStream();
var length = stream.Read(buffer, 0, buffer.Length);
var incomingMessage = Encoding.UTF8.GetString(buffer, 0, length);
结果
Incoming message: POST /api/v1/myapi/ HTTP/1.1
Content-Type: application/json
ApiKey: dac38055e7914b1f8ca5de1683b58322
cache-control: no-cache
Postman-Token: 50da88e4-5c89-4368-a5eb-1574eb35b24a
User-Agent: PostmanRuntime/7.6.1
Accept: */*
Host: MyDNS:13000
accept-encoding: gzip, deflate
content-length: 590
Connection: keep-alive
AmazingDataFromBody
是否有任何东西可以解析此内容,或者我必须编写自己的内容?如我所见,您希望处理HTTP请求,因此:
TCPListener
来处理HTTP请求和响应。链接:Start
HttpListenerGetContext()
获取HttpListenerRequest
对象HttpListenerRequest
可以获取标题和正文,请检查以下链接:GetContext()
获取HttpListenerResponse
对象//此示例需要System和System.Net命名空间。
公共静态void SimpleListenerExample(字符串[]前缀)
{
// 1
HttpListener=新的HttpListener();
// 2
Add(“http:/localhost:8080//api/v1/myapi/”;
// 3
listener.Start();
Console.WriteLine(“监听…”);
//4
HttpListenerContext=listener.GetContext();
HttpListenerRequest=context.request;
//5
HttpListenerResponse=context.response;
//建立回应
string responseString=“我的响应”;
//注意编码
byte[]buffer=System.Text.Encoding.UTF8.GetBytes(responseString);
//6
response.ContentLength64=buffer.Length;
//让流与响应体一起运行
System.IO.Stream输出=response.OutputStream;
输出.写入(缓冲区,0,缓冲区.长度);
//必须关闭输出流。
output.Close();
listener.Stop();
}
如果您不想使用HttpListener
可以使用以下基本步骤,使用TCPListener
和TCPClient
,但您必须了解HTTP协议:
内容长度
标题有效内容长度的大小信息阅读正文
在我的例子中,我更喜欢使用
HttpListener
,它允许处理HTTP的多个方面,比如认证。.Net提供了HttpClient
,为什么不使用它呢?还是Web API?看起来你想重新发明轮子。