Вы не должны обрабатывать синхронные сетевые коммуникации в главном потоке.Вы должны делать сетевые вещи асинхронно.Вот пример , который должен помочь вам.
Используя асинхронный подход, вы сможете легко отменить сетевую операцию после истечения времени ожидания.