public bool Execute { get; }
true if more data need to be processed to decode a complete HTTP request; otherwise false.
Use this property in conjunction with the Process method if you are reading chunks of data. You should keep reading the chunks until this property return false.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Jpip;
using Leadtools.Jpip.HttpServer;
using Leadtools.Jpip.RequestDecoder;
using Leadtools.Jpip.RequestEncoder;
using Leadtools.Jpip.Client.WinForms;
using Leadtools.Jpip.Client.InteractiveDecoder;
using Leadtools.Jpip.Server;
using Leadtools.Jpip.Logging;
public void ProcessClientRequests()
{
Leadtools.Examples.Support.SetLicense();
HttpClientRequest clientRequest = null;
HttpRequestDecoder decoder = null;
Socket client;
client = GetClientSocket();
clientRequest = new HttpClientRequest();
byte[] clientData;
int received;
do
{
clientData = new byte[client.ReceiveBufferSize];
received = client.Receive(clientData);
clientRequest.Process(clientData, 0, received);
} while (clientRequest.Execute); //receive data until a complete request is received
Console.WriteLine("Client request received: {0}", clientRequest.CompleteMessage);
File.WriteAllBytes(Path.Combine(LEAD_VARS.ImagesDir, "ServerRequests.dat"), clientRequest.BodyData);
decoder = new HttpRequestDecoder(clientRequest);
Console.WriteLine("Server will process client image {0}", decoder.Fields.RequestTargetFields.Target);
//Process client request...
client.Close();
}
private Socket GetClientSocket()
{
Socket listenSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
IPAddress hostIP = IPAddress.Parse("127.0.0.1");
int port = 107;
IPEndPoint ep = new IPEndPoint(hostIP, port);
listenSocket.Bind(ep);
// start listening
listenSocket.Listen(10);
//a client should send a request to the listening address
Socket _client = listenSocket.Accept();
listenSocket.Close();
return _client;
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";
}