Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Networking with C++ [closed]

I'm a newcomer to using C++ but have got a general Idea of its syntax and usability. I want to learn how to communicate over networks through C++ programming though but I can't seem to find any tutorials for C++ specifically. Does anyone know any good resources to learn about networking with C++ or what I should start with?

like image 874
TopGunCoder Avatar asked Oct 02 '10 18:10

TopGunCoder


People also ask

Is C good for networking?

Network programming enables processes to communicate with each other over a computer network, but it is a complex task that requires programming with multiple libraries and protocols. With its support for third-party libraries and structured documentation, C is an ideal language to write network programs.

What is C Networking?

A class C network is the most common of the five computer network classes, designated as A through E, in classful network network addressing architecture. The class designations were based on the split of 32 bits required for an IP address, the first four of which indicated the address classe in binary code: A=0. B=10.

What does closing a socket do?

close() call shuts down the socket associated with the socket descriptor socket, and frees resources allocated to the socket. If socket refers to an open TCP connection, the connection is closed. If a stream socket is closed when there is input data queued, the TCP connection is reset rather than being cleanly closed.

What does it mean to close a socket?

In C, I understood that if we close a socket, it means the socket will be destroyed and can be re-used later.


1 Answers

Given your newness to C++, I would not recommend building directly on the sockets APIs unless you can find no suitable library to use. Boost.Asio will give you a huge head start and expose you to the higher-level abstractions used in network programming.

It's easy when starting out building a sockets-based system to get something that 'sort of' works and then spend weeks debugging corner cases that only happen under real-world timing and load conditions. Using boost::asio correctly is hardly a cakewalk even if it shields developers from the complexities of raw socket handling.

If the goal is to learn how to use raw sockets (or some other transport mechanism such as RPC) correctly, then by all means roll your own using online samples and docs to understand the individual BSD or Winsock APIs - if the goal is to solve a business problem as quickly as possible with high quality code on both business and networking infrastructure side, then use a good networking library. In this case your question does indicate a wish to learn so using a library may not be the best way to achieve your stated goal.

like image 156
Steve Townsend Avatar answered Oct 07 '22 02:10

Steve Townsend