Ваша проблема в «readDataToData: receiveData» - вы просите GCDAsyncSocket читать данные до тех пор, пока он не найдет «ничего» - полученный данные неизвестны. Обычно используется что-то вроде
[asyncSocket readDataToData:[GCDAsyncSocket CRLFData] withTimeout:-1 tag:0];
Это будет читать, пока не получит комбинацию CR / LF для прекращения чтения. Вы также можете прочитать заголовок и определить длину данных для чтения.
Вы должны указать, когда возвращаться из чтения (вот почему вы ничего не получаете). Кроме того, он, вероятно, вернется к вам только тогда, когда приложение закроется, потому что сокет закрывается после завершения работы приложения.