I want to create a very simple program that lets 2 people share files over the internet by just putting the file in a folder and it automatically syncs it to the other persons. I know there are programs out there like this but i want to try to make my own. I'm getting a lot better with c++ and its time to take it to the next level, so is there any easy to use libraries out there that will help me with this? also is there anything else i will need to do for this to work?
You will need a "presence" server, where two (or more) users can login (with a password or without) and can "see" each other.
You can design using two models
1) The shared file is stored on server first and then server pushes he file to the other user
2) Presence server gives the (client of) first user the IP of the other user and then the client sends the file to the other side (IMs follow this for sending file)
In both cases you also need to develop application level protocol, and the presence server. Without presence one the users wont be able to "see" each other and hence wont be able to share file with.
How will the program who all are on the network? Also, there should be some program "listening" for files.
When two programs talk to each other over network one program should typically know the name/IP of other machine, then there is a handshake to check whether the program has established connection with right program on other side etc.
Otherwise how do you "save the files to everyone in the network"?
I am telling, that question was more for Pickle.
You need all of the things that I said. Libraries will help with sockets and sending/receiving data.
The design you have to decide, and then develop a application level protocol yourself. By doing this will you will learn about network programming and protocols . Otherwise use already existing protocols like XMPP which google uses. this might prove to be too much depending on how much one knows about network programming.
If you want some comprehensive protocol to be developed and looking at helper libraries you can also have a look at protocol buffers
start by creating two simple programs 1) that listens on a port, accepts a connection receives a file and saves it 2) that opens a connection to that port (initially it can be same machine as program 1) then opens and sends a file across socket
Later on you can add handshake and error handling etc.