My understanding is that you should never trust the client in a multiplayer game and so shouldtherefore aim to do any gameplay critical processing server-side. The disadvantage of pure client-side logic is that there is no verification
In other words you should probably go with option C;a third option; send an abstract representation of what the player wants to do to the server. For example you would send a 'move key' event to the server, which would then calculate the velocity/position of the player and then update the view on the client.
However, you don't want your clients to be waiting on the server before updating the game state as this could cause lagging issues. A better solution may be to update the game state on the client as well, whilst treating the server state as authoritative and overriding the client if necessary.