|
Roger Stoltz wrote: I tried hard not to offend you and make assumptions about your skills and I did not imply that you are a beginner.
Roger Stoltz wrote: when you write "a person should not be writing production socket code if they can't perform the simple task of authoring a Socket class that encapsulates the Winsock2 API and a socket handle".
I agree, but I don't assume that the OP is that experienced regarding this since he asked the question.
My comments were directed towards the OP, since his project is the subject, with the single exception of the reply to your "they are almost always wrong" comment.
Roger Stoltz wrote: I tried hard not to offend you
I took no offense to anything you said, I just disagree with some of it.
|
|
|
|
|
Thanks guys, your adivse is will definatly be used. I think my best bet is to re write. I've started looking at casyncsocket and it seems like I wont need much modification so I'll try that first.
Thanks once again
I'll keep you posted
Tom
|
|
|
|
|
Hi again guys
Your debate seems to be coming along nicely . Using CAsyncSocket seems to have done the trick (although I still need to sort the asynchronous sending)
It's still quite annoying that the CSocket seems unstable. It's possible it was my fault but all the debugging I did only lead to the conclusion it was a problem with CSocket.
Think when I get the time I'll sort a proper wrapper for raw sockets. I did one long ago at university but time is of the essence at the moment.
Keep the debate moving, it's the best way for people to learn.
Cheers
Tom
|
|
|
|
|
PS
I am (the OP) quite experienced but you guys fell off the trail, the question was about the CSocket WaitMessage problem, NOT about how I can encapsulate an existing class.
Keep it easy
Tom
|
|
|
|
|
Well, Tom...
tomitron wrote: I am (the OP) quite experienced
Yes, you may very well be experienced. But since this is a forum other readers will seek guidance from the forum threads even though they don't post in them. So I try to assume as little as possible about the skills of the people asking questions, without leaving the boundaries of the question.
I have made the mistake of assuming people to be more experienced than they actually were. That started discussions or suggestions which lead them into more trouble than necessary and it was even harder to get them out of it.
That is also why I suggested you to use CAsyncSocket since you seemed to be familiar with CSocket . I believe that the step from CSocket to CAsyncSocket is smaller (and will give you a solution "good enough") than using raw sockets, even if the latter can be considered to be more technically correct in certain ways.
tomitron wrote: you guys fell off the trail, the question was about the CSocket WaitMessage problem
Well, it's quite common that someone else than the OP replies to a post that was posted as a reply to the OP. That could be to "debate" something or exchange ideas and opinions that may not necessarily be related to the OP's question. If they were related I would expect it to generate a reply to the OP in some way as I've seen in a lot of forum threads.
Regarding your WaitMessage() problem, I stand by my first post and recommend you to read the article I linked to.
Off topic:
I stumbled upon your post by accident, otherwise I wouldn't have known that you posted again since you have replied to yourself. If you would have replied to me I would have gotten an email.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
All fixed,
A great thanks goes out for the info. I had been thinking switching methods was an option but thought I was just bailing out on what could have been a simple bug.
At least CAsyncSocket was simple to change to and I can't see any further issuses occuring.
One last question what does OP mean? (Original Poster?). I'm quite new to actually posting on forums. I normally find my answer on someone else’s thread.
Once again Thanks
Tom
|
|
|
|
|
tomitron wrote: One last question what does OP mean? (Original Poster?).
It could mean "original poster" or "original post" depending on the context, i.e. either the post or the person behind it.
I'm happy that it worked out for you.
One other thing though: it would be a nice touch if you rate posts, either good or bad. Of course you're not obligated to do so and no feelings are hurt if you don't.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
You might have solved your problem by now, but one other reason that CSocket sometimes appears to "freeze" is that another one of the "golden rules" of sockets is broken: Don't call Receive() multiple times inside of OnReceive(). The correct code will make exactly one single call to Receive() inside OnReceive().
MSDN advises that multiple calls to Receive() can cause the application to freeze.
The same rule applies to CAsyncSocket() too.
See "Mfcsocs.exe sample demonstrates how to communicate in a TCP connection in Visual C++" at http://support.microsoft.com/kb/185728[^], which talks about a situation in which there are no more FD_READs. The simple little word about the application "hanging" is so important that it should be in large red bold letters, but it's not.
Mike
|
|
|
|
|
Thanks mate. I have solved it but it is true that microsoft sould be abit more open about what can go wrong with csocket. Especially since it is the default class when using wizards
|
|
|
|
|
I added Xp style to my application.According to the instruction of the following article(From www.CodeProject.com).
http://www.codeproject.com/w2k/xptheme.asp?df=100&forumid=2590&exp=0&select=1186683&mpp=50#xx1186683xx
But the problem was there was a border around the button i created using
CButton::Create().
So i need to get rid of that problem.pls reply me
bhw
|
|
|
|
|
please ask this on the dedicated forum at the bottom of the article... the author will certainly reply to you faster there.
|
|
|
|
|
Still Author did not reply my Question
bhw
|
|
|
|
|
You must wait he/she needs to read your question.;)
|
|
|
|
|
1>Linking...
1> Creating library Debug\Polygon.lib and object Debug\Polygon.exp
1>Embedding manifest...
1>Registering output...
1>Build Time 0:13
1>Build log was saved at "file://c:\CodeStation\Polygon\Debug\BuildLog.htm"
1>Polygon - 0 error(s), 0 warning(s)
2>------ Skipped Build: Project: PolygonPS, Configuration: Debug Win32 ------
2>Project not selected to build for this solution configuration
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 1 skipped ==========
In above ATL object compilation the output is a dll. What is the significance of a lib and an exp at the same time.
Secondly what is the intend of a manifest and why is it embedded?
|
|
|
|
|
Mr Groezer,
You seem to me to be a beginner. I have nothing against that, because I know some things are difficult to assimilate when we don't know them at first.
BUT
you also seem to me to be a bit too lazy, because your questions sound like interviews.
I now don't think anymore you are passing any interview, because it's been too long now since you first asked a question of that style. but sincerely, Google AND MSDN are your friends, especially in those matters, and you should not intend a programming forum to answer every of your question, even if everyone can answer them.
The forum is a place where you have to show a professional behavior. that means when you have a basic point to figure out, first search the web for it yourself, try to keep it fixed yourself, see the web if anyone already encountered that issue before you, and only then, you ask, providing all the infos that will permit us to help you (that is, all the steps you've done before asking the forum).
thanks for understanding that i am being indulgent by not blaming you much
|
|
|
|
|
Thanks Mr Toxcct. I was expecting some practical answer not bookish knowledge from google
|
|
|
|
|
then, practically, a .lib file is used when linking a dll statically in your project. it is not needed if you link dynamically, but you'll have to know the dll exported symbols to use them.
about the .exp files, I don't know much, but i never used them, and it seems that they are only generated in debug mode, so they are certainly not worth it to think to much on them
|
|
|
|
|
Hi Tom,
I have read several of your questions now, and like toxcct says, you do not seem to be willing to take the first step yourself. When you get into more advanced programming, you will learn that the first step is always the internet. Whether you choose google or MSDN or the usenet news groups is up to you, but I think you will find that to get respect from people at CP, you must show some willingness to to do some work yourself. Try google or MSDN, and come back when you have informed questions.
|
|
|
|
|
I dont know when I use of google for search about my questions finaly I arrive to Codeproject.
|
|
|
|
|
Well guys , i am transferring live video image coming from a webcam(by a server application having Media Player Encoder(9 series) to a client(application containing Media player4(active x control), but i m getting a delay aroud 5 to 7 seconds.Infact as per my requirement 1 to 2 secs delay can be dangerous. As per the configuration ,i m working with 100 Mbps LAN network.
Plz help me to reduce the dealy, if any one have some way?
if u have information regarding other way of real image transfer. plz ur views are welcome
I shall be thankful to u.
Naveen Khanna
Software Engg.
Gurgaon
|
|
|
|
|
you can not reduce delay . in windows media encoder there is always
a delay of about 5 - 15 seconds . if you are working on the
100 Mbps LAN then you can use the other third party streaming software.
I know in main concept it is 1-2 second delay
RajeshGupta
|
|
|
|
|
Thanks Mr. Gupta for your kind suggestion.
can u tell me about these third party tools(if u have info regarding any one). from where i can get it(free or paid)?
Thanks
Naveen Khanna
Software Engg.
Gurgaon
|
|
|
|
|
Media player defaults to 5000ms of preroll buffering if I remember right. In the "retail"
version of the player you can set this down to 1000ms so maybe there's an equivalent property
in the activeX control - check the Media Player SDK.
You should also set a low buffer size in the encoder profile as well - 500ms maybe?
For less than about 2 seconds overall latency, you'll need to go to lower level APIs/SDKs or use
3rd party software, as mentioned by others.
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Well Mr. Mark,yes it's right that media player have 3 sec default buffering time and u can set it min 1 sec which i had set in profile settings already still latency is more than 5 to 7 secs.
can u tell me about these lower lever API's to use or any 3rd party software?
Thanks
Naveen Khanna
Software Engg.
Gurgaon
|
|
|
|
|
Naveen Khanna wrote: can u tell me about these lower lever API's
Check out the Windows Media Format SDK[^].
Combined with DirctShow, you can get pretty low latency if you dig into the settings
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|