public ChannelFields(
string channelId,
string[] newChannels,
string closeChannel,
Nullable<int> requestId
)
channelId
The value for the JPIP server assigned channel ID.
newChannels
The value which names one or more transport protocols that the client is willing to accept.
closeChannel
Closes one or more open channels in a session.
requestId
Specifies a Request ID value.
The newChannels is used to request a new JPIP channel. If no Channel ID request field is present, the request is for a new session. Otherwise, the request is for a new channel in the same session as the channel identified by the Channel ID request field.
Refer to JpipChannelTypes for valid values for the newChannels parameter.
To close all channels associated with a session, specify the value "*" in the closeChannel.
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;
}