By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,463 Members | 2,954 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,463 IT Pros & Developers. It's quick & easy.

Development of a scalable server

P: n/a
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
Share this Question
Share on Google+
4 Replies


P: n/a
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

P: n/a
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

P: n/a
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

P: n/a
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 discussion thread is closed

Replies have been disabled for this discussion.