So, I have just started with C++ Sockets. Got the program to get headers from various servers just right today, and am aiming to make an IRC bot in under a month to perfect those basics. In the long term(less than an year), I am aiming to make a P2P messaging system, and maybe a file sharing/resources sharing network in the future. I am not sure of the entire process and the skills and knowledge I require.

I guess Sockets are definitely required? I also don't understand a lot of the basics, like how a P2P program is able to connect to various peers all at once when a socket can only support one connection at a time. Does it use UDP or TCP to send the packets? Since the order of the reaching of packets is not important in some P2P networks, they don't need to use TCP, I guess, like BitTorrent? I was reading up the topic in a book, and there were a lot of things explained like DHT and various algorithms, of which I have got the hang of only a part of things. I understand what a DHT is. Don't understand a majority of the other things. Can you guys give me tips or good books where the basics are properly explained?

As is obvious, my prior knowledge of networking is very weak, just upto the OSI stack, how packets are sent and stuff. Nothing more.

I also understand the P2P concept being that any peer can be the server and any can be the client. So, there is the client and server code on every computer.

I run programs in quickbasic and c on my home computers which are networked. 20 years ago folks figured out how to use the ethernet to connect these programs. Their system automatically takes data from one user written C program in one computer and moves to a similar program in another computer. This must be a monumental task because I can't even do it with the serial port yet and Ethernet is many times tougher. I wish I could find some help.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.