Dear Francois, thank you very much for your ideas. I totally forgot about the NAT routers. I never worked with a NAT router but I know they are dificult devices and lots of programs have problems to pass through them. For the moment I will ignore them because I want to see my application working at least for peoples who have a 'normal' internet connection. Later I will see how can this NAT problem can be solved. I know something about a NAT translate the IP but I have no idea how this can be overcome but I will start looking in to it.
Also you are right about accessing the list from the server. Obvious I need some kind of script to handle the requests form the clients. I don't know too much PHP but I think I will find a friend to write it for me. I intended to use your ICS. That package is plain great. I didn't put to much internet oriented code in my programs until now but I made few experiments with ICS and I really like it. And what the heck, if I can make this work, I will donate the code to ICS. ============================================= Cosmin Prund informed me that using the reply button doesn't work to creat a new thread. I want to appologise to every one who use an email client for inconvenince for messing up the order of the threads. I didn't know about this issue, since I am subscribed to this list using my Yahoo account which can't be read by my email client (Thunderbird). I never use my real email address for places where it might be made public. I already receive 100-150 spam emails every day on this 'public' email address. ( http://en.wikipedia.org/wiki/Thread_hijacking ) ============================================= --- Francois PIETTE <[EMAIL PROTECTED]> wrote: > > The difficulty is to make the clients aware of each other. > > IMO the most difficult thing is to have a client connect to another one > which is behind a NAT router or a firewall. > NAT routers are very very common these days. > > > Until now my idea is keep a txt file on the server with RW rights where a > > client will write its > > own IP when it enters the network and delete its own address when it > > leaves the network. > > Better to use a standard web server with a few scripts (PHP, ASP or even > Delphi depending on the hosting possibilities). > One script will update the IP list, the other will download it. Use a > timestamp in the list to clean it if a client doesn't do anything for some > time. > Your client could use ICS HTTP client (http://www.overbyte.be) to > query/update the webserver, using the script you'll design. Quite easy. > > > 7. I estimate that the maximum number of users in this moment is 50000 and > > rising (considering the > > number of downloads per day) so I think there won't be more than 20000 > > simultaneous connected > > users at a moment of the day. > > With a webserver, you don't have persistant connections. So what really > count is how many will query the server at the same time given the fact that > the script accessing the file will execute during - for example - half a > second. I guess you'll only have a handful of simultaneous connections to > the server. > > > This will generate a list of aprox 0.5MB which is too big. > > You need 4 bytes per IP and probably 4 bytes for time stamp. This gives a > list of 160 KB. > You can keep the time stamp in another file. So the size will be 80 KB for > IP only. > > > So if you have any better idea please let me know. > > You can send only updates to the connecting client. The clients could say: > "Hey server give me all changes since this time". This would dramatically > reduce the size. > > Contribute to the SSL Effort. Visit http://www.overbyte.be/eng/ssl.html > -- > [EMAIL PROTECTED] > The author for the freeware multi-tier middleware MidWare > The author of the freeware Internet Component Suite (ICS) > http://www.overbyte.be > > > > ----- Original Message ----- > From: "Human" <[EMAIL PROTECTED]> > To: "Delphi-Talk Discussion List" <[email protected]> > Sent: Sunday, May 14, 2006 1:32 PM > Subject: designing a simple P2P application - server side > > > > Hello. > > I want to write a simple P2P module (for one of my existing applications > > application) specialized > > in transferring small files (max 0.5 or 1 MB) but I would like not to keep > > a central server. > > A P2P network without server is difficult to realize so I think I really > > need a minimum central > > server. > > The difficulty is to make the clients aware of each other. > > Until now my idea is keep a txt file on the server with RW rights where a > > client will write its > > own IP when it enters the network and delete its own address when it > > leaves the network. > > Any client connected to the network will read that file to know who else > > it present in the > > network. > > In this moment the clients won't need the server anymore. They connect to > > each other directly and > > start the download. > > > > Items and issues: > > 0. The server is running Windows but it is not mine so I can't write my > > own custom software > > (although I think they allow my to write and install small .Net > > application on their server) > > 1. Every client must renew its IP (and timestamp) in the server's list > > every at 3 hours > > 2. It must download a new IP list at every 20 minutes > > 3. The list must be small > > 4. What will happen if 2 clients will simultaneously try to write to the > > list? > > 5. What happens when a client suddenly leave the network without deleting > > its IP from the list > > (probably the list must be cleaned by a special utility) > > 6. Idea: when a client enters the network it can send a message to every > > already connected client > > to inform them about its presence so they don't need to re-download the > > list too often from the > > server. > > 7. I estimate that the maximum number of users in this moment is 50000 and > > rising (considering the > > number of downloads per day) so I think there won't be more than 20000 > > simultaneous connected > > users at a moment of the day. This will generate a list of aprox 0.5MB > > which is too big. So in > > order to decrease the download: > > -compression needed > > -more than a list is required > > > > So if you have any better idea please let me know. > > > > > > If I choose Christianity then the Islamic will say I'm a pagan. > > If I choose Islamic then the Buddhism will say I'm a pagan. > > If I chose Buddhism then the Jewish will say I'm pagan. > > If I choose no God then everybody will say I'm pagan. > > Please, can I be free? Can you NOT tell me how I should live MY life? > > > > __________________________________________________ > > Do You Yahoo!? > > Tired of spam? Yahoo! Mail has the best spam protection around > > http://mail.yahoo.com > > __________________________________________________ > > Delphi-Talk mailing list -> [email protected] > > http://www.elists.org/mailman/listinfo/delphi-talk > > __________________________________________________ > Delphi-Talk mailing list -> [email protected] > http://www.elists.org/mailman/listinfo/delphi-talk > If I choose Christianity then the Islamic will say I'm a pagan. If I choose Islamic then the Buddhism will say I'm a pagan. If I chose Buddhism then the Jewish will say I'm pagan. If I choose no God then everybody will say I'm pagan. Please, can I be free? Can you NOT tell me how I should live MY life? __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com __________________________________________________ Delphi-Talk mailing list -> [email protected] http://www.elists.org/mailman/listinfo/delphi-talk
