Handle physics with sockets?

For handling physics in multiplayer situations, you really want to go with a traditional multiplayer setup. The server needs to be the authority and they need to be calculated only once on the server. Then, depending on how your game plays, you may need to do client-side prediction as well. If the player moves their character around at anything resembling a fast pace (basically, if the game is not turn-based), you will need client-side prediction. Here is a very good set of articles that explain the overall idea of this: Gabriel Gambetta: Fast-Paced Multiplayer

There are situations where you do need to calculate physics on the client to keep the client-side prediction working correctly, but that is not being calculated for the true game state. You are only calculating them on the client so you can move the player character as soon as possible, but the physics calculations on the server are the true state of the world and will override the calculations on the client. In these cases, you want to have the most simple physics possible or may need to do a lot of work on them to make it as deterministic as possible so that the client and the server come up with as close to the same result as possible. A game like Angry Birds would be very difficult to do in this way because the physics are quite detailed and can be non-deterministic. In situations like that, I would probably find a way to forego client-side prediction, try to work the lag into the gameplay and have the physics run only once on the server.