Thread: Clueless where to begin networking.

  1. #1
    Registered User
    Join Date
    May 2010
    Posts
    178

    Clueless where to begin networking.

    This question may qualify as a duplicate or be a candidate for closure so please notify and I am happy to delete it.

    There is a plethora of information on networking in c++. Similar questions aimed where I am headed with this question are Is there a beginner's book for C++ socket programming? and Networking with C++ for starters.

    I am struggling to filter this information and determine a specific focus. What should I be doing? I program c++ on Windows so am I a candidate for only learning winsock? If not, then what should I learn and focus on? If a library, such as boost::asio, why? I have created a client/server application in Java but have never done so in c++.

    My end-goal from the beginning of this question is to determine what I should learn as someone new to networking in c++ and wanting to get on the right path from the beginning. I desire the current and best programming practice in use by professional programmers today.

    If the questions above have suitable answers to draw draw, please point them out or append new ones.

  2. #2
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,659
    As a start, I would suggest Beej's Guide to Network Programming to get a low level understanding of sockets, protocols and so on (he even has a book!)

    > I program c++ on Windows so am I a candidate for only learning winsock?
    After you've read Beej, you'll know that winsock is just a thin wrapper (very thin in places) over normal sockets.

    > If not, then what should I learn and focus on? If a library, such as boost::asio, why?
    Why bother learning anything?
    boost::asio gives you an abstraction (so you have less detail to worry about), and is cross-platform (so you have less detail to worry about).

    > I desire the current and best programming practice in use by professional programmers today.
    Everybody does it differently, whether it's using boost::asio, some other portable library, some locally made abstraction, or just the basic API.
    What you use depends on the scope of the problem at hand (and in a professional environment, often constrained by what already exists).

    As I've said before, knowing how to program and make design choices is far more important than rote learning of any given API.
    So knowing enough about say boost::asio to know when you should use it in a given context is a good thing, even if you can't remember any of the detail (that's what manual pages are for).
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  3. #3
    Registered User
    Join Date
    May 2010
    Posts
    178
    Quote Originally Posted by Salem View Post
    As a start, I would suggest Beej's Guide to Network Programming to get a low level understanding of sockets, protocols and so on (he even has a book!)

    > I program c++ on Windows so am I a candidate for only learning winsock?
    After you've read Beej, you'll know that winsock is just a thin wrapper (very thin in places) over normal sockets.

    > If not, then what should I learn and focus on? If a library, such as boost::asio, why?
    Why bother learning anything?
    boost::asio gives you an abstraction (so you have less detail to worry about), and is cross-platform (so you have less detail to worry about).

    > I desire the current and best programming practice in use by professional programmers today.
    Everybody does it differently, whether it's using boost::asio, some other portable library, some locally made abstraction, or just the basic API.
    What you use depends on the scope of the problem at hand (and in a professional environment, often constrained by what already exists).

    As I've said before, knowing how to program and make design choices is far more important than rote learning of any given API.
    So knowing enough about say boost::asio to know when you should use it in a given context is a good thing, even if you can't remember any of the detail (that's what manual pages are for).
    Very insightful post and thank you for providing a very good explanation.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. clueless
    By asdfgtrew in forum C++ Programming
    Replies: 10
    Last Post: 02-15-2012, 11:14 AM
  2. Clueless on an Assignment
    By PYROMANIAC702 in forum C Programming
    Replies: 12
    Last Post: 07-14-2011, 07:27 AM
  3. clueless
    By majornewb in forum C++ Programming
    Replies: 3
    Last Post: 12-11-2004, 09:52 AM