Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

Multicast max packet size using Indy control

Posted on 2006-05-18
6
Medium Priority
?
706 Views
Last Modified: 2013-11-17
I am writing an application in BCB5 using Indy network controls

The size of the data that  I wish to multicast is about 6K bytes. Do I need to split it up into smaller blocks (fragments) so that each block is smaller than the MTU or will the Indy component do this for me. I imagine that since multicast can't use TCP then it uses UDP which doesn't provide blocking and sequencing ?
If it is the case that I have to fragment it myself prior to sending, then do I have to wait for a short time between sending each fragment or will the Indy control queue the sent data and send it as soon as it is able ?
I realise that I will also need to provide sequencing information so that I can defragment the data at the receiving end.

Thanks in advance.

Roger
0
Comment
Question by:alcindor
  • 3
  • 2
5 Comments
 
LVL 16

Expert Comment

by:George Tokas
ID: 16710748
>>I am writing an application in BCB5 using Indy network controls
Why??
>>The size of the data that  I wish to multicast is about 6K bytes.
From a central (Master) to periferals(Slaves)??

Anyway if it is a classic client/server configuration my oppinion is:
1. Use the classic TServer/TClient sockets from internet tab of components... TServerSocket to the central and TClientSocket to the rest...
2. Configure the sockets as "nonBlocking" (default).
3. TServerSocket will have all the clients connected... It have the property "ActiveConnections" that represent the number of client sockets connected... Using:
 for(int i = 0; i < TServerSocketName->Socket->ActiveConnections; i++)
 {
   TServerSocketName->Socket->Connections[i]->Send.....;//Could be sendbuf,sendtext....
 }

This is one GOOD way to multicast without the need of UDP which is UNreliable (send and forget)...

George Tokas.
0
 
LVL 2

Author Comment

by:alcindor
ID: 16717760
I am using Indy conrols because I have had problems with the Netmanage controls that are shipped with BCB5 and there have been posted several opinions on Netmanage controls which indicate that they are not the most reliable of controls.
I do not wish to use connection oriented communications for my application which is why I am using multicast.
The application is a real-time industrial controls application and using multicast is more eficient than handling individual communications with each host.

My questions still stand therefore.

Thanks for your comment nevertheless.

Roger
0
 
LVL 16

Expert Comment

by:George Tokas
ID: 16718294
>>The application is a real-time industrial controls application and using multicast is more eficient than handling individual communications with each host.

I dissagree... But this is my oppinion...
TServerSocket and TClientSocket from the Internet tab never failed me 7 years now... Don't know later if they will....
Of course every design of my apps is Client/Server design...
UDP is a "Send and Forget" protocol... Ok. it is a connectionless protocol but HOW can you find out IF one of the connected machines is OFFLINE, RELIABLY.... It is easier to do that task with TCP than UDP...

>>industrial controls application
If that means a kind of MPU involved then the most of the modern MPU's have TCP/IP stack and for those they haven't and have only RS232 there are TCP/IP<->RS232 converters VERY RELIABLE and low cost...

George Tokas.
0
 
LVL 2

Author Comment

by:alcindor
ID: 16725303
Fot my application, I don't care if one of the machines is off line. My server will be multicasint updates every 300 mSec. Any off-line station will get an update when it comes back on-line. Each workstation will send a "heartbeat" packet every 10 seconds to the server in any case so that the server will have some indication when a machine is off line.

Thanks for your comments once more,

Roger
0
 
LVL 16

Accepted Solution

by:
George Tokas earned 500 total points
ID: 16725339
You can use the UDP socket from the internet page if you have problem with blocking socket connection with Indy...
It is non blocking by default....
>>My server will be multicasint updates every 300 mSec
Is it any timer involved?? If yes watch out because recently I found out some limitations about the interval....
>>Each workstation will send a "heartbeat" packet every 10 seconds
Wise... I assume an intentifier is somewere inside the packet...

Now to answer to your question about the 6K I think that it is a small packet anyway...
In TCP connections it have no problem... For UDP I can't say because I didn't use it...

George Tokas.
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Here is a helpful source code for C++ Builder programmers that allows you to manage and manipulate HTML content from C++ code, while also handling HTML events like onclick, onmouseover, ... Some objects defined and used in this source include: …
Jaspersoft Studio is a plugin for Eclipse that lets you create reports from a datasource.  In this article, we'll go over creating a report from a default template and setting up a datasource that connects to your database.
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
THe viewer will learn how to use NetBeans IDE 8.0 for Windows to perform CRUD operations on a MySql database.

575 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question