I'm in no way adept at network programming nor concepts, but why not just send the bullet angle, speed and such when it fires and let the other clients figure out the rest? It's supposed to end up at the same place anyway, no? That way you're got a lot less of info to have to send.. I have no idea really.. Just my two cents.
yes it's the best method for bullets, but there's no guarantee that it will end up on the same place, for a player a bullet can hit someone and for another one just miss him, there's also need for a server side synchonization.
For player movements, you have to send and receive packets everytime you can, be sure to do another thread for that if you can.
Also, Dead reckoning is the first thing you will need to implement if you want to play your game via internet.
Via lan only sending positions will be a "just works" solution, via internet it will be a totally unplayable thing