Dinner time in our home is "family time". Sometimes it is the only time of day our daughter saw her father for any length of time, before it was time to get ready for bath and bed. I wanted this time to be sacred and not a battlefield.
If someone does not want to eat what is served, they do not eat or they can make a bowl of non sugar cereal.. (this was once they could actually make this on their own).. Up until then I always made sure there was at least 1 thing served our daughter would eat. I noticed she liked tiny servings. Maybe 1 TBLsp or 2 of each item on a small plate.
Salad was a couple of cucumbers 1 cherry tomato and a few small pieces of lettuce and 2 slices of carrots.
If she ate the item or items, I would add another TBL serving or I would ask her, "would you like a few more green beans?" She would answer , "yes please" or "no thank you".
We never complimented her or criticized her eating if possible. We would try to say things like. "Wow looks like you enjoyed the chicken." Or "I am sorry you did not like the meatloaf, would you like more spinach?"
If she refused to eat, We would tell her "that was fine, but remember no snacks." She did have a small glass of milk before bath each night, so i knew she would not starve.
For the listening issues there are 2 ways to handle this.
Say his name and ask him to "look at me and listen with his ears."
And then ask him to "repeat what I just said.". If you do this enough it will become a habit. Also we do not yell across the house. Instead we go to the person we need to speak with. This way we "make sure they heard and understood us."
And then mom, you need to do the same back to him. When he asks you a question look at him and repeat it if necessary.. He is mimicking responses the way he sees and hears them around him. It is his version.
3year old's, like to have a heads up.They cannot stop on a dime.
"In 3 minutes, I need you to start putting the toys away." Then after 3 minutes.. "Ok it has been 3 minutes, put your toys away." If the room is a disaster, break it down for him.. "Put the Legos back in the bucket." Then "Put the books back on the book shelf.". etc.
"After dinner you will have 30 minutes to play and then you will need to get ready for your bath.. "Then set a timer or remind him after 20 minutes.. "You now have 10 more minutes to play, then you need to put those toys away so you can get your bath."
"I need your help. Please take my shoes and your shoes put them back on the porch. Thank you."
I remember being spanked as a child and I did not respond well to it, instead it made me frightened and humiliated. I never wanted my child to feel that way with me, so I learned how to speak with my child to have her respond the way I needed her to respond. There are many parenting books that would be helpful, if you feel like the things you have tried are not working. You may find some new ideas from different books. That is how I found these techniques.
Take a big breath, he is only 3 and has not been on this earth long enough to know how to handle his frustrations. Acknowledge you know he is frustrated, disappointed, tired.. whatever, so he can then use these words to express himself instead of being physical. .
If you drink, have a glass of wine after her goes to bed.