|
What is the reason for 4k limit?
I'm using asynchronous RW when sending and reading data, does it apply?
I had another 3rd party component which sends packets of about 400k.
You may recieve those packets at a maximal rate, say, up to 20 times per second.
If you do it with 4k and blocking read, reading operations takes too much time due to those chinking and you're limited to say 5 requests per second.
If you use as much as 400k or more you're in time to achieve that 20 times per second capture.
In other words with 4k limit reading those 400k takes 200ms as with 400k+ limit you can get them at 50ms.
Чесноков
|
|
|
|
|
4K works for me - you can up the limit as you see fit; I didn't say this had to be the one you chose. I wouldn't use too large a size though - if there's a problem, it's quicker to detect it with a smaller size than a larger one.
|
|
|
|
|
Message Closed
modified 23-Nov-14 5:56am.
|
|
|
|
|
That is error prone, suppose scenario 4) when some extraneous data was recieved.
The better is to use some custom header before serialized data.
Чесноков
|
|
|
|
|
In order to handle this situation correctly, you need a more sophisticated communications protocol between the server and client. In my case, from the server, I put an MD5 hash at the beginning of the message, along with a length, and then the message itself. When the receiver receives the message, it then calculates the MD5 hash on the received data. If they match, it then sends an ACK to the sender. If not, it sends a NACK and then the sender resends the message. The overall message itself can be as long as it needs to be.
You can define ACK and NACK however you want, I use the text ACK and NACK for mine, so if I want to look at the raw ethernet packets in ethereal or something like that, I can easily track what is happening.
I also do this for a UDP broadcast, except that there is no response from the clients. This ensures that the clients only act on known good messages from the server.
David
|
|
|
|
|
|
If that works for you, great. We've had problems in the past with unreliable network connections which caused real problems with larger buffer sizes, but if you can guarantee this is not a problem for you then great.
|
|
|
|
|
What were the problems? How small buffer size resolved the issue in your case?
Чесноков
|
|
|
|
|
Basically, they were to do with clients who had infra-red connections (don't ask). The smaller buffer size meant that we received drop out notifications straight away. Granted, we had multi-gigabyte files that were being transferred - the drop out allowed us to trigger reconnects to alternate servers.
|
|
|
|
|
How to check Stream contains valid BinaryHeader to avoid deserialization exceptions such as Binary stream '0' does not contain a valid BinaryHeader ?
Чесноков
|
|
|
|
|
Could you post some code ??? so we can see what your trying to do. ?
With great code, comes great complexity, so keep it simple stupid...
|
|
|
|
|
I do not want that deserialization call formatter.Deserialize(ms); will result in Exception. Thus I need to check that MemoryStream ms; contains valid header which is used internally in BinaryFormatter.Deserialize() call.
Чесноков
|
|
|
|
|
Its not that simple. please provide an sample code from where you get the error. else im unable to help you.
With great code, comes great complexity, so keep it simple stupid...
|
|
|
|
|
It is very simple, MemoryStream contains your data for deserialization.
With MemoryStream.GetBuffer(); you may get access to underlying byte[] array.
It needs to check that in that array first bytes are valid BinaryHeader structure used inernally by BinaryFormatter during deserialization call.
If there is garbage in the MemoryStream then BinaryFormatter will throw exception. I need to avoid that exception and make sure correct data will be passed for deserialization.
Finally I found that link that resolves the issue http://primates.ximian.com/~lluis/dist/binary_serialization_format.htm[^]
Чесноков
|
|
|
|
|
dose anyone one know how to change the opacity of a picture box or anything like a buttons opacity? and still keep the background of the form at 100%?
|
|
|
|
|
It depends what you are trying to do. Are you just trying to make a control transparent? If so, take a look at this[^] article.
|
|
|
|
|
Hi In my system i has Visual Studio Team System(2008), i don't have sharepoint. My system o/s is Windows XP. I want to use SPFarm commands in my code. Here my question is without installing sharepoint is it possible to use SpFarm commands by adding the reference? will it work? Please help me. I'm very new to Sharepoint.
Very urgent for me.
Thanks in advance.
|
|
|
|
|
Please do not post your question in multiple forums.
It's time for a new signature.
|
|
|
|
|
OK, This is driving me insane. Yes I am a beginner and I am trying but this is confusing me so much.
I have the following classes...(This is a patient simulation program)
1) Form (my main form which displays an ecg etc)
2) ecg class
I would like the ecg class to be able to draw itself (ecg.Draw())
Now, I tried to create a custom panel class derived from panel, and overide the onpaint method.
But I cannot seem to initialise it with a panal control on my main form, and nothing hapens.
Am I even doing this right in the first place.
Should I pass a panel object into the constructor og my ecg class, or should i set a static member of ecg in the form control and invoke paint from here?
I am so confused!
Thank you
Steve
|
|
|
|
|
Message Closed
modified 23-Nov-14 5:56am.
|
|
|
|
|
Hi.
Thats what I am trying to do, but the onpaint method never gets called
Steve
Also,
If I do it that way, how do I add custom functions to the control?
Thank you
Steve
|
|
|
|
|
It works fine for me, so try recreating the steps I used:
1) In solution explorer, right click your project, and add a user control. Call it something sensible.
2) Highlight the new control, and open the code.
3) Change the derivation from "UserControl" to "Panel" - you don't need to do this, but WTF. If you do, compile the program, and delete the line the compiler complains about (AuoScaleMode)
4) In your new control class, add the following:
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.FillRectangle(Brushes.Green, e.ClipRectangle);
}
Now, when you add your new control, it will fill itself with Green - this shows OnPaint in being called.
I would then add a Paint method to my ECG class, and hand it either e.Graphics so it can draw itself.
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
|
|
|
|
|
Hello
"I would then add a Paint method to my ECG class, and hand it either e.Graphics so it can draw itself."
Forgive, but, it is this part I am strugling with.
So do I create a class called ECGMachine, and give it a method called OnPaint()?
And how do I pass in e.graphics etc?
I am learning but still strugling with this part.
Thank you for your time,
Steve
|
|
|
|
|
Don't call it "OnPaint" - that has a specific meaning, you will find out later and don't need to worry about that now.
using System.Drawing;
using System.Windows.Forms;
public partial class ECGMachine
{
...
public void Paint(Graphics g)
{
g.FillRectangle(Brushes.Red, g.ClipBounds);
}
...
}
Replace the FillRectangle with your code...
Then in to OnPaint method for your user control / panel as previously:
...
myECGMachineINstance.Paint(e.Graphics);
...
[edit]I forgot to tell you how to call it... blame lack of coffee.[/edit]
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
|
|
|
|
|
OK I got that to work, however...
Once I have created the control, instead of coding its position, size etc I would like to manualy draw a panal object on the form, so how would I then "atach" the new panal to my control?
Thank you
Steve
|
|
|
|