Sign in to follow this  

Some winsock questions...

Recommended Posts

Vortez    2714

Hi, first of all, i apologize in advance if my questions aren't very clear, so i'll do my best. I've done some networking in the past using c++, so i just want to point out that im not a noob just starting out, but i got some questions that i wanted to ask for a little while now.


1-There's 3 way i know of to work with sockets, blocking, non-blocking, and windows messages, but they seem to be all intermingle altogether. I mean, i would really like to see a good tutorial explaining each of these case in a clear manner but can't seem to find any. In fact, i got all of these to work in different project, but often, by lengthy trial and error, until it worked, leaving me a bit confused now that i haven't done some for a while.


2-One of my project is a program similar to VNC, letting me control the computer of another person, once the other accept the connection. It work flawlessly, i can do whatever i want with it, but somehow i had to use some kind of syncronisation for it to work properly, especially in the screenshot part, let me explain.


-The client send a screenshot request to the server


-The server generate and send the screenshot to the client, but wait for another request before processing the next one


-The client recieve the screenshot, and the process repeat itself until the connection is closed


I had to do it this way otherwise the server would literally flood it's tcp windows and ran out of virtual memory, because the clien wasn't able to receive the data fast enough. In the task manager, the size of the swap file would go higher and higher until the server crashed. So the question is, am i doing it the right way with the current algoritm above, or am i doing it wrong, because it dosen't seem to be the most effective way of doing it, but it work.


Note: Im using asyncronous sockets with manual pooling in this project (ie: without using windows messages). I would like to post the code, but the program is huge, couple thousands lines of code... and multithreaded, i don't think it would be usefull.


Hope i've been clear enough.



Edited by jbadams
Restored post contents from history.

Share this post

Link to post
Share on other sites
hplus0603    11347
If you drive up your memory usage, then you are buffering too much somewhere. Typically, that will not be in the TCP stack itself, because that has a limited buffer size, and will start blocking when you fill it up; typically, those kinds of growing queues live at the application layer.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this