|
I generally agree with Mark's observation that problems like this are almost always caused by code on the receiving side.
Here, you have set the timeout for select() to 5 microseconds. That's way too short.
Your understanding of the send() function is slightly wrong. send() does not actually send bytes out over the wire; that happens later when the winsock TCP stack determines that it's time to send data on the wire, after considertion of things like Nagle, delayed ACK etc. Rather, a successful call to send() only indicates that the winsock stack has successfully transferred data in your user buffer to its internal winsock buffer. The return value from send() tells you exactly how much of your buffer has been accepted; you should therefore inspect the returned value to ensure that winsock transferred everything to its internal buffer.
So, if you are debugging and single-stepping through your code, and you see a successful completion of the call to send(), then it's probably still too early for a sniffer to see the actual data on the wire. That will happen, but it will happen at some indeterminate time in the future.
Mike
|
|
|
|
|
Thanks Mike!
Maybe you meant to post this to the OP
For some reason I assumed his code was in a loop. If it's not then that 5microsecond timeout is definitely not going to work (well, rarely).
Mark
|
|
|
|
|
Hi Flo,
Check out Mike O'Neill's reply above.
I asked previously how you're handling it when you don't receive the number of bytes requested.
Are you looping until you get the bytes you're expecting or just trying to recv once after the
5microsecond wait?
Mark
|
|
|
|
|
If I remember it correctly, If the packet size become too small, very small that it doesnt send it until the successive packets join together to make good "chunk". It's somewhat termed as "Neigile's" Nagle algorithm or so. just check the size of the packets your are sending.
-- modified at 13:16 Friday 26th January, 2007
Code-Frog:So if this is Pumpkinhead. Time for him to run and hide. It's an interesting thought really.
|
|
|
|
|
Nagle
The data is sent after (by default on Windows Sockets) 200ms though.
Mark
|
|
|
|
|
Done. Thanks
Code-Frog:So if this is Pumpkinhead. Time for him to run and hide. It's an interesting thought really.
|
|
|
|
|
Hi all. Im having trouble making this file read-out look nice.
The code is this:
<br />
#include <fstream><br />
using namespace std;<br />
<br />
int main(){<br />
char buffer[100];<br />
ifstream file("file.dat",ios::end);<br />
if(file.fail()){<br />
printf("File not found.\n");<br />
}<br />
printf("File contents read the following:\n");<br />
while(file >> buffer){<br />
printf("\n%s ",buffer);<br />
}<br />
file.close();<br />
system("pause");<br />
return 0;<br />
}<br />
The file "file.dat" reads "This is only a test" inside. But when i run the program it reads:
File contents read the following:
This
is
only
a
test
-----------------------
So i figured maybe it was a problem with my way of printing the message in the console. So i switched the printf around from this
<br />
printf("\n%s ",buffer);<br />
To this
<br />
printf("%s\n ",buffer);<br />
To this
<br />
printf("%s",buffer);
And still cant come up with a better looking format. Is there another way i can make it print the way its saved in the file? Thanx in advance!
P.S.
If i made the print like this: printf("%s ",buffer); It would print the first line in the file as its written in the file. But if there were two lines or three etc. It prints it like this
"This is only a test This is only a test This is only a test"
Which isnt what im looking to do. I'd like it look something like
This is only a test
This is only a test
This is only a test
|
|
|
|
|
I think you may find this link very useful
www.dorota.ecs.fullerton.edu/classes/CS231/lect3-cs.ppt
or Google on "ios:end"
John P.
|
|
|
|
|
jparken wrote: www.dorota.ecs.fullerton.edu/classes/CS231/lect3-cs.ppt
Is http://www.dorota.ecs.fullerton.edu/ a valid domain?
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
dellthinker wrote: Is there another way i can make it print the way its saved in the file?
Yes. Either read and print it on a line-by-line basis, or read each word into an array and print the contents of the array as you see fit.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Operator >> used with (i/o)fstream read one word from actual position in file to first space or end line. If you want read line you must use getline.
You can read about it there: http://www.cplusplus.com/istream::getline
-----------------------------------------------------------------
Surely without war there would be no loss
Hence no mourning, no grief, no pain, no misery
No sleepless nights missing the dead... Oh, no more
No more war
[Sleepless - Cradle of Filth]
|
|
|
|
|
I am looking for the Windows API that opens the Select User dialog.
Can anyone give a reference or an example on how to do this ?
Thanks,
Ami
|
|
|
|
|
Ami Bar wrote: ...the Select User dialog.
Where's this?
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
When you change a security permission for file, registry key, etc. You can choose a user/group to add to the DACL by a Select user dialog.
I am looking for a Windows API that open this dialog.
Ami
|
|
|
|
|
Ami Bar wrote: I am looking for a Windows API that open this dialog.
I don't know of an API to do this, but you could always populate your own list.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
It has to be a Windows common dialog or something.
Ami
|
|
|
|
|
It has to be?
Then it will be documented here: Common Dialog Box Library[^]
If you don't find a common dialog you can maybe use NetQueryDisplayInformation to help populate
your own.
Mark
|
|
|
|
|
Thanks, but I already found this API and if I won't have a choice I will use it.
I thought that if the API CredUIPromptForCredentials asks for a user name and password, there must be a similar API that does what I need.
Ami
|
|
|
|
|
Ami Bar wrote: ...or something.
Which covers everything else, right? Are you simply wanting a list of domain users?
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
|
Hi All,
I looking for some stuff that explain how template in C++ work.
What i need is not how to use them ... ( this i already know ).
Some one can help me ?
I already looked in Google and did not find something that can tell me all about template behind the scenes...
Thanks for any help.
|
|
|
|
|
Your request does not make any sense. "Help me with templates, but I know how they work" --- ??? Maybe you should re-word your request to ask a more exact question about templates
John P.
|
|
|
|
|
Templates are something similar to pre-processor macros. Take the std::vector template for example. All it really is is a set of functions for managing the memory of any given type. If you wanted an array of 3 different class types, you would have to write functions for allocating the memory, more functions for accessing the memory, more for moving, more still for freeing.... with 3 arrays that means 3 very similar functions for each class. But, if you use a template, those functions are added for you at compile time, leaving you time for a beer :->
|
|
|
|
|
Templates, It just creates different type of classes or functions for different type of types. Multiple types of codes for the same template. Nothing so magical in it
Eg:
<br />
template<class T> <br />
class test<br />
{<br />
T typeval;<br />
<br />
};<br />
And when you say, test<int> i;
it creates,
<br />
class test<br />
{<br />
int typeval;<br />
};<br />
if you use a float,test<float> i; it creates,
<br />
class test<br />
{<br />
float typeval;<br />
};<br />
Got it?
Code-Frog:So if this is Pumpkinhead. Time for him to run and hide. It's an interesting thought really.
|
|
|
|
|
Templates[^]
Templates are a part of the C++ language. "Behind the scenes" is compiler-specific I would think.
What do you think is happening "behind the scenes" anyway?
Maybe look in the ISO/ANSI C++ Standard?
|
|
|
|