Die Sockets können das, du musst nur drauf achten, dass OnRead immer wenn etwas ankommt aufgerufen wird und eventuell deine nachricht noch garnicht da ist, du könntest zB nach jedem String ein Byte senden, das anzeigt, dass die nachricht zu Ende ist. Die Sockets lösen das mit dem OnRead
IMHO mit einem Thread der ständig abfragt ob etwas ankommt, also praktisch auch etwas wie ein "timer"
Benutz einfach mal die Suche, es hatten schon einige weitere Leute das gleiche Problem.