473,385 Members | 1,764 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

Development of a scalable server

I need to develop a server application which would listen for UDP messages
(on a certain port, say 8464) and process each message (which entails
storing that data in the database) and then respond to it (via a UDP
message - sent to the client which sent the original message).

The server application needs to be highly scalable - it is expected to
handle upto 5000 clients simultaneously.

I believe a fork() and exec() like solution would need to be developed.
On windows, at least 3-4 years back, an application using IO Completion
ports would have been ideal.

I can choose .NET based development using C#. Or I can go for C++/ATL
based development also.
Can anyone point me to the best available options now?
Nov 16 '05 #1
4 2275
Les

On a server that has to do 5000 at once, I'd look at
C++/ATL solution (just because it is more proven so less
risk).
-----Original Message-----
I need to develop a server application which would listen for UDP messages(on a certain port, say 8464) and process each message (which entailsstoring that data in the database) and then respond to it (via a UDPmessage - sent to the client which sent the original message).
The server application needs to be highly scalable - it is expected tohandle upto 5000 clients simultaneously.

I believe a fork() and exec() like solution would need to be developed.On windows, at least 3-4 years back, an application using IO Completionports would have been ideal.

I can choose .NET based development using C#. Or I can go for C++/ATLbased development also.
Can anyone point me to the best available options now?
.

Nov 16 '05 #2
Jonas,

I would look at the UdpClient class. It might give you what you need.
I would just make sure that if you use that class, that you handle packet
processing on other threads.

Or, if you want, you can use the Socket class directly, and get notified
when you receive packets (through asynchronous callbacks).

I believe the Socket class does use I/O completion ports, so it should
meet your needs for scalability.

Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Jonas Hei" <j_*******@hotmail.com> wrote in message
news:opsesilqyub6gh4e@fx1025...
I need to develop a server application which would listen for UDP messages
(on a certain port, say 8464) and process each message (which entails
storing that data in the database) and then respond to it (via a UDP
message - sent to the client which sent the original message).

The server application needs to be highly scalable - it is expected to
handle upto 5000 clients simultaneously.

I believe a fork() and exec() like solution would need to be developed.
On windows, at least 3-4 years back, an application using IO Completion
ports would have been ideal.

I can choose .NET based development using C#. Or I can go for C++/ATL
based development also.
Can anyone point me to the best available options now?

Nov 16 '05 #3
Nicholas Paldino [.NET/C# MVP] wrote:
Jonas,

I would look at the UdpClient class. It might give you what you need.
I would just make sure that if you use that class, that you handle packet
processing on other threads.
on 5000 threads? ;-) since UdpClient is synchronous, I wouldn't
recommend it.

Or, if you want, you can use the Socket class directly, and get notified
when you receive packets (through asynchronous callbacks).

I believe the Socket class does use I/O completion ports, so it should
meet your needs for scalability.


bye
Rob
Nov 16 '05 #4
Robert,

Which is why you use the Socket class directly. Just because you have
5000 clients simultaneously performing actions, doesn't mean that there are
5000 distinct packets from clients that need to be processed. I would
actually recommend the thread pool for something like this, assuming that
the packets themselves are small.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Robert Jordan" <ro*****@gmx.net> wrote in message
news:ci*************@news.t-online.com...
Nicholas Paldino [.NET/C# MVP] wrote:
Jonas,

I would look at the UdpClient class. It might give you what you
need. I would just make sure that if you use that class, that you handle
packet processing on other threads.


on 5000 threads? ;-) since UdpClient is synchronous, I wouldn't
recommend it.

Or, if you want, you can use the Socket class directly, and get
notified when you receive packets (through asynchronous callbacks).

I believe the Socket class does use I/O completion ports, so it
should meet your needs for scalability.


bye
Rob

Nov 16 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

28
by: Me | last post by:
I would like to redesign my existing site into php using classes. I am not the most experienced developer with PHP, and would like to know if anyone can give me some input on a starting point for a...
5
by: Robert J. O'Hara | last post by:
For some time I've struggled with the problem of displaying simple captioned figures on webpages in a way that is robust and scalable. I tend to make "boring" (um, I mean "conservatively elegant")...
4
by: SRLoka | last post by:
After reading the newsgroups and various .Net web sites, I have come to a conclusion that BeginReceive and BeginSend are the way to go as they use IOCompletion Ports(I have no clue what they mean...
0
by: Jonas Hei | last post by:
I need to develop a scalable server which has to receive and send UDP messages. It is required to process hundreds of messages (coming from different remote computers) per second (possibly even...
1
by: John Grandy | last post by:
Could someone point me in the direction of good discussions on scalable state management solutions? Specifically, pros and cons of following strategies: Strategy 1 : temporary business-objects...
3
by: Terry Holland | last post by:
Ive read that to build scalable web apps it is not recommended that state be stored in session variables. My understanding of this is that, with many users using the application concurrently,...
0
by: fionab | last post by:
Reading, Berkshire, UK - Crainiate Software announce the release of Objecto Framework 1.0, a new component framework 5 years in development, designed to make it easy for programmers to create agile...
0
by: softwarecompany | last post by:
Web software outsourcing company support affordable custom web site design and software development services assist by experience software developers, programmers, and web designers have expertise...
0
by: softwarecompany | last post by:
Web software outsourcing company support affordable custom web site design and software development services assist by experience software developers, programmers, and web designers have expertise in...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.