473,408 Members | 1,822 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,408 software developers and data experts.

Network programming

Assuming I stay clear of CLR / managed code as this is intended to be
optimized for speed as a Windows service, what is the best and easiest API
for TCP and UDP network programming? I've been told I should stay away from
MFC's CSocket because it's profoundly buggy... or something. Target
deployment environments are Win2000, WinXP, Win2003, and WinVista.

Thanks,
Jon
Sep 25 '06 #1
2 1323
Jon Davis wrote:
Assuming I stay clear of CLR / managed code as this is intended to be
optimized for speed as a Windows service, what is the best and
easiest API for TCP and UDP network programming? I've been told I
should stay away from MFC's CSocket because it's profoundly buggy...
or something. Target deployment environments are Win2000, WinXP,
Win2003, and WinVista.
Frankly, your best bet would be to use .NET 2.0. It wraps up a very
sophisticated async socket model using IO Completion ports that's a lot of
work to reproduce. Real-world experience has shown that it's possible to
scale a .NET sockets app to support 1,000,000 simultaneous users on a single
machine (granted, a 16-way Itanium with tons of memory, but still...).
Don't make the mistake of dismissing a CLR-based solution because "it will
be too slow", because very likely it wouldn't be.

That said, you'll get the best performance by mimicing what .NET does - use
async reads and writes and IO completion ports. You can get at all of that
through the Win32 API. I'm sure there are some high-quality IOCP-based
sockets libraries for Windows "out there" as well - I'd suggest letting
Google do your walking for a bit and see what you can turn up. If nothing
else, you can do as programmers have done for decades and reinvent the
wheel yourself.

-cd
Sep 25 '06 #2
Frankly, your best bet would be to use .NET 2.0. It wraps up a very
sophisticated async socket model using IO Completion ports that's a lot of
work to reproduce. Real-world experience has shown that it's possible to
scale a .NET sockets app to support 1,000,000 simultaneous users on a
single machine (granted, a 16-way Itanium with tons of memory, but
still...). Don't make the mistake of dismissing a CLR-based solution
because "it will be too slow", because very likely it wouldn't be.
The 'too slow' argument is not important for most situations, as other
things are the most likely bottlenecks.
There is a CLR port of Quake2 with good performance, so the CLR is by no
means slow.
That said, you'll get the best performance by mimicing what .NET does -
use async reads and writes and IO completion ports. You can get at all of
that through the Win32 API. I'm sure there are some high-quality
IOCP-based sockets libraries for Windows "out there" as well - I'd suggest
letting Google do your walking for a bit and see what you can turn up. If
nothing else, you can do as programmers have done for decades and
reinvent the wheel yourself.
I have programmed a socket service myself using Winsock. It's not so hard to
create a Winsock application if you read the MSDN docs and check out the
samples from the platform SDK.
But be aware that you have to do all error handling, threading design, ...
yourself. That wil cost you lots of development time.

All of your platforms run .NET2.0. I suggest you create at least a pilot
application in .NET2.0 to see it the 'too slow' argument is true for your
case or not.

--

Kind regards,
Bruno van Dooren
br**********************@hotmail.com
Remove only "_nos_pam"
Sep 25 '06 #3

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

Similar topics

8
by: Alex Ang | last post by:
I have written the following VBScript program. It is stored into a file "map_drive.vbs". It successfully mapped to a network drive \\server1\data. Dim WshNetwork Set WshNetwork =...
1
by: mch2k2 | last post by:
Hello All I have just started working on Pyhton. I need urgent help regarding Python Network Programming. I want the elctronic version of the Book: Foundations of Python Network programming by...
3
by: Jay | last post by:
Hi, I implemeneted an FTP client and server long time back using Java. I found sockets porgramming in java quite useful and easy to handle. I now wanted to implement a similar program using C++....
6
by: John Walton | last post by:
Hello, everyone. I just began school, and they already assigned us science fair. Since I'm in 8th grade, I get to do demonstrations for our projects. I'm probably going to demonstrate Python's...
2
by: Jesse Engle | last post by:
i'm learning how to do some basic low-level network programming. the site i'm reading talks about "network byte order" and "host byte order". the thing is, it doesn't give an explanation as to what...
4
by: Wayne M J | last post by:
I have "Professional .Net Network Programming" and "Network Programming for MS Windows 2nd Ed", but I find both of these to be lacking in what I am looking for. Has there been any books printed...
5
by: Terry | last post by:
Could someone please suggest me a good book to learn network programming. I have been programming in C#/VB.NET/VB 6.0 and have also used a bit of C++ (not MFC/ATL/COM) I am a total novice when...
6
by: Eric | last post by:
Does anyone know of any GOOD network programming book(s) that are C# based, as well as any online tutorials and forums on network programming? Thanks
2
by: ppuniversal | last post by:
Hello, Can someone tell a good Tutorial on Network Programming in C++, except Beej's Guide and Vijay Mukhi's tutorials. I want to make a Client Server application in C++ which will involve...
9
by: Mex | last post by:
Hi, I'm looking for a good book for beginners about Network Programming. Besides Stevens' book, I would like something specific for C++ language. Any suggestions? Thanks in advantage, Massimo
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
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
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...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...

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.