Вы каждый раз запускаете новый фрагмент, чтобы он никогда не сохранял свое состояние. вы должны использовать слушателя при закрытии фрагмента, чтобы вы могли вернуть свои данные.
Использование TcpClient и TcpListener просто означает несколько меньше строк кода. Поскольку Вы говорите, что это - просто обертка по классу Сокета, таким образом, нет никакого различия в производительности между ними, это - просто выбор стиля.
Обновление: Так как этот ответ был отправлен, исходный код .NET стал доступным. Это действительно показывает, что TcpClient является очень легкой оберткой по классу Сокета, который является самостоятельно оберткой сверху собственного WinSock2 API*.
Кроме того, можно получить доступ к сокету непосредственно от TCPClient
объект, это находится под свойством Client
- таким образом, нет никакого различия в производительности.