Depending on the API you use, TCP connections can be configured to send data immediately. However, this generates more data to be sent (think of the underlying protocol's headers). Also due to TCP's reliability it may take longer to send multiple data packets than to send one bigger packet after a small timeout. Like you said yourself, UDP is better suited for updating game states.
However, I do not recommend to turn off buffering because it will consume more resources.