public class ServerControlFields
When a client request is received, this class will contain the JPIP Server Control fields received from the client.
Access this class from the RequestFields.RequestServerControlFields property in the RequestFields class when a new client request is received.
A JPIP Client uses this class to provide information to the server on how it should execute the current request.
The client can tell the server the type of image streams it is willing to accept using the ImageReturnTypes property. For more information about allowed image return types check the ImageReturnType enumeration.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Jpip;
using Leadtools.Jpip.Caching;
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 SendClientRequest()
{
Leadtools.Examples.Support.SetLicense();
RequestFields fields = new RequestFields();
ModelItem cacheModleItem;
ExplicitBinDescriptor binDescriptor;
ModelElement cacheModleElement;
fields.RequestTargetFields = new TargetFields("0", "image1.jp2", null);
fields.RequestChannelFields.NewChannel = new string[] { "http" };
fields.RequestDataLimitFields.DataLength = 16384;
cacheModleItem = new ModelItem();
binDescriptor = new ExplicitBinDescriptor(ExplicitBin.MetaBin, 0, null); //indicate that metadata bin 0 is locally cached and need not be sent.
cacheModleElement = new ModelElement(false, binDescriptor);
cacheModleItem.BinDescriptors.Add(cacheModleElement);
cacheModleItem.CodeStreamRange.Add(new Range(0, 0));
fields.RequestCacheManagementFields.ModelItems.Add(cacheModleItem);
ImageReturnType imageType = new ImageReturnType(ImageTypes.JppStream, false);
fields.RequestServerControlFields.ImageReturnTypes = new ImageReturnType[] { imageType };
fields.RequestViewWindowFields.FrameSize = new LeadSize(500, 300);
fields.RequestViewWindowFields.RegionOffset = new LeadPoint(0, 100);
fields.RequestViewWindowFields.FrameSizeRoundingDirection = RoundingDirection.Closest;
SampleRange codeStreamRange = new SampleRange();
codeStreamRange.Range = new Range(0, 0);
fields.RequestViewWindowFields.CodeStream.Add(codeStreamRange);
HttpRequestEncoder encoder = new HttpRequestEncoder(IPAddress.Parse("127.0.0.1"), 108);
HttpWebRequest request = encoder.Encode(fields, "jpip", null);
Console.WriteLine(request.Address.ToString());
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.WriteLine("Server response received.");
Console.WriteLine(response.Headers.ToString());
}
public 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;
}